home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 2000 July: Mac OS SDK / Dev.CD Jul 00 SDK2.toast / Development Kits / Cross Platform / QuickTime 4.1.2 Windows SDK / CIncludes / Quickdraw.h < prev    next >
Encoding:
C/C++ Source or Header  |  2000-04-12  |  86.5 KB  |  2,721 lines  |  [TEXT/R*ch]

  1. /*
  2.      File:        Quickdraw.h
  3.  
  4.      Contains:    Interface to Quickdraw Graphics
  5.  
  6.      Version:    Technology:    Mac OS 9
  7.                  Release:    QuickTime 4.1
  8.  
  9.      Copyright:    (c) 1985-1999 by Apple Computer, Inc., all rights reserved
  10.  
  11.      Bugs?:        For bug reports, consult the following page on
  12.                  the World Wide Web:
  13.  
  14.                      http://developer.apple.com/bugreporter/
  15.  
  16. */
  17. #ifndef __QUICKDRAW__
  18. #define __QUICKDRAW__
  19.  
  20. #ifndef __COMPONENTS__
  21.     #include <Components.h>
  22. #endif
  23.  
  24. #ifndef __MACTYPES__
  25.     #include <MacTypes.h>
  26. #endif
  27.  
  28. #ifndef __MIXEDMODE__
  29.     #include <MixedMode.h>
  30. #endif
  31.  
  32. #ifndef __QUICKDRAWTEXT__
  33.     #include <QuickdrawText.h>
  34. #endif
  35.  
  36.  
  37.  
  38.  
  39. #if PRAGMA_ONCE
  40. #pragma once
  41. #endif
  42.  
  43. #ifdef __cplusplus
  44. extern "C" {
  45. #endif
  46.  
  47. #if PRAGMA_IMPORT
  48. #pragma import on
  49. #endif
  50.  
  51. #if PRAGMA_STRUCT_ALIGN
  52.     #pragma options align=mac68k
  53. #elif PRAGMA_STRUCT_PACKPUSH
  54.     #pragma pack(push, 2)
  55. #elif PRAGMA_STRUCT_PACK
  56.     #pragma pack(2)
  57. #endif
  58.  
  59. enum {
  60.     invalColReq                    = -1                            /*invalid color table request*/
  61. };
  62.  
  63. enum {
  64.                                                                 /* transfer modes */
  65.     srcCopy                        = 0,                            /*the 16 transfer modes*/
  66.     srcOr                        = 1,
  67.     srcXor                        = 2,
  68.     srcBic                        = 3,
  69.     notSrcCopy                    = 4,
  70.     notSrcOr                    = 5,
  71.     notSrcXor                    = 6,
  72.     notSrcBic                    = 7,
  73.     patCopy                        = 8,
  74.     patOr                        = 9,
  75.     patXor                        = 10,
  76.     patBic                        = 11,
  77.     notPatCopy                    = 12,
  78.     notPatOr                    = 13,
  79.     notPatXor                    = 14,
  80.     notPatBic                    = 15,                            /* Special Text Transfer Mode */
  81.     grayishTextOr                = 49,
  82.     hilitetransfermode            = 50,
  83.     hilite                        = 50,                            /* Arithmetic transfer modes */
  84.     blend                        = 32,
  85.     addPin                        = 33,
  86.     addOver                        = 34,
  87.     subPin                        = 35,
  88.     addMax                        = 37,
  89.     adMax                        = 37,
  90.     subOver                        = 38,
  91.     adMin                        = 39,
  92.     ditherCopy                    = 64,                            /* Transparent mode constant */
  93.     transparent                    = 36
  94. };
  95.  
  96. enum {
  97.     italicBit                    = 1,
  98.     ulineBit                    = 2,
  99.     outlineBit                    = 3,
  100.     shadowBit                    = 4,
  101.     condenseBit                    = 5,
  102.     extendBit                    = 6
  103. };
  104.  
  105. enum {
  106.                                                                 /* QuickDraw color separation constants */
  107.     normalBit                    = 0,                            /*normal screen mapping*/
  108.     inverseBit                    = 1,                            /*inverse screen mapping*/
  109.     redBit                        = 4,                            /*RGB additive mapping*/
  110.     greenBit                    = 3,
  111.     blueBit                        = 2,
  112.     cyanBit                        = 8,                            /*CMYBk subtractive mapping*/
  113.     magentaBit                    = 7,
  114.     yellowBit                    = 6,
  115.     blackBit                    = 5
  116. };
  117.  
  118. enum {
  119.     blackColor                    = 33,                            /*colors expressed in these mappings*/
  120.     whiteColor                    = 30,
  121.     redColor                    = 205,
  122.     greenColor                    = 341,
  123.     blueColor                    = 409,
  124.     cyanColor                    = 273,
  125.     magentaColor                = 137,
  126.     yellowColor                    = 69
  127. };
  128.  
  129. enum {
  130.     picLParen                    = 0,                            /*standard picture comments*/
  131.     picRParen                    = 1,
  132.     clutType                    = 0,                            /*0 if lookup table*/
  133.     fixedType                    = 1,                            /*1 if fixed table*/
  134.     directType                    = 2,                            /*2 if direct values*/
  135.     gdDevType                    = 0                                /*0 = monochrome 1 = color*/
  136. };
  137.  
  138. enum {
  139.     interlacedDevice            = 2,                            /* 1 if single pixel lines look bad */
  140.     roundedDevice                = 5,                            /* 1 if device has been "rounded" into the GrayRgn */
  141.     hasAuxMenuBar                = 6,                            /* 1 if device has an aux menu bar on it */
  142.     burstDevice                    = 7,
  143.     ext32Device                    = 8,
  144.     ramInit                        = 10,                            /*1 if initialized from 'scrn' resource*/
  145.     mainScreen                    = 11,                            /* 1 if main screen */
  146.     allInit                        = 12,                            /* 1 if all devices initialized */
  147.     screenDevice                = 13,                            /*1 if screen device [not used]*/
  148.     noDriver                    = 14,                            /* 1 if no driver for this GDevice */
  149.     screenActive                = 15,                            /*1 if in use*/
  150.     hiliteBit                    = 7,                            /*flag bit in HiliteMode (lowMem flag)*/
  151.     pHiliteBit                    = 0,                            /*flag bit in HiliteMode used with BitClr procedure*/
  152.     defQDColors                    = 127,                            /*resource ID of clut for default QDColors*/
  153.                                                                 /* pixel type */
  154.     RGBDirect                    = 16,                            /* 16 & 32 bits/pixel pixelType value */
  155.                                                                 /* pmVersion values */
  156.     baseAddr32                    = 4                                /*pixmap base address is 32-bit address*/
  157. };
  158.  
  159.  
  160. enum {
  161.     sysPatListID                = 0,
  162.     iBeamCursor                    = 1,
  163.     crossCursor                    = 2,
  164.     plusCursor                    = 3,
  165.     watchCursor                    = 4
  166. };
  167.  
  168. enum {
  169.     kQDGrafVerbFrame            = 0,
  170.     kQDGrafVerbPaint            = 1,
  171.     kQDGrafVerbErase            = 2,
  172.     kQDGrafVerbInvert            = 3,
  173.     kQDGrafVerbFill                = 4
  174. };
  175.  
  176. #if OLDROUTINENAMES
  177. enum {
  178.     frame                        = kQDGrafVerbFrame,
  179.     paint                        = kQDGrafVerbPaint,
  180.     erase                        = kQDGrafVerbErase,
  181.     invert                        = kQDGrafVerbInvert,
  182.     fill                        = kQDGrafVerbFill
  183. };
  184.  
  185. #endif  /* OLDROUTINENAMES */
  186.  
  187. typedef SInt8                             GrafVerb;
  188. enum {
  189.     chunky                        = 0,
  190.     chunkyPlanar                = 1,
  191.     planar                        = 2
  192. };
  193.  
  194. typedef SInt8                             PixelType;
  195. typedef short                             Bits16[16];
  196.  
  197. /***************   IMPORTANT NOTE REGARDING Pattern  **************************************
  198.    Patterns were originally defined as:
  199.    
  200.         C:             typedef unsigned char Pattern[8];
  201.         Pascal:        Pattern = PACKED ARRAY [0..7] OF 0..255;
  202.         
  203.    The old array definition of Pattern would cause 68000 based CPU's to crash in certain circum-
  204.    stances. The new struct definition is safe, but may require source code changes to compile.
  205.     
  206. *********************************************************************************************/
  207.  
  208. struct Pattern {
  209.     UInt8                             pat[8];
  210. };
  211. typedef struct Pattern                    Pattern;
  212. /*
  213.  ConstPatternParam is no longer needed.  It was first created when Pattern was an array.
  214.  Now that Pattern is a struct, it is more straight forward to just add the "const" qualifier
  215.  on the parameter type (e.g. "const Pattern * pat" instead of "ConstPatternParam pat").
  216. */
  217.  
  218. typedef const Pattern *                    ConstPatternParam;
  219. typedef Pattern *                        PatPtr;
  220. typedef PatPtr *                        PatHandle;
  221. typedef SignedByte                         QDByte;
  222. typedef QDByte *                        QDPtr;
  223. typedef QDPtr *                            QDHandle;
  224. typedef short                             QDErr;
  225. enum {
  226.     singleDevicesBit            = 0,
  227.     dontMatchSeedsBit            = 1,
  228.     allDevicesBit                = 2
  229. };
  230.  
  231. enum {
  232.     singleDevices                = 1 << singleDevicesBit,
  233.     dontMatchSeeds                = 1 << dontMatchSeedsBit,
  234.     allDevices                    = 1 << allDevicesBit
  235. };
  236.  
  237. typedef unsigned long                     DeviceLoopFlags;
  238. /*
  239.     PrinterStatusOpcode.  For communication with downloading and printing services.
  240. */
  241. typedef SInt32                             PrinterStatusOpcode;
  242. enum {
  243.     kPrinterFontStatus            = 0,
  244.     kPrinterScalingStatus        = 1
  245. };
  246.  
  247.  
  248. struct PrinterFontStatus {
  249.     SInt32                             oResult;
  250.     SInt16                             iFondID;
  251.     Style                             iStyle;
  252. };
  253. typedef struct PrinterFontStatus        PrinterFontStatus;
  254.  
  255. struct PrinterScalingStatus {
  256.     Point                             oScalingFactors;
  257. };
  258. typedef struct PrinterScalingStatus        PrinterScalingStatus;
  259.  
  260. struct BitMap {
  261.     Ptr                             baseAddr;
  262.     short                             rowBytes;
  263.     Rect                             bounds;
  264. };
  265. typedef struct BitMap                    BitMap;
  266. typedef BitMap *                        BitMapPtr;
  267. typedef BitMapPtr *                        BitMapHandle;
  268.  
  269. struct Cursor {
  270.     Bits16                             data;
  271.     Bits16                             mask;
  272.     Point                             hotSpot;
  273. };
  274. typedef struct Cursor                    Cursor;
  275.  
  276. typedef Cursor *                        CursPtr;
  277. typedef CursPtr *                        CursHandle;
  278.  
  279. struct PenState {
  280.     Point                             pnLoc;
  281.     Point                             pnSize;
  282.     short                             pnMode;
  283.     Pattern                         pnPat;
  284. };
  285. typedef struct PenState                    PenState;
  286. #if !OPAQUE_TOOLBOX_STRUCTS
  287.  
  288. struct MacRegion {
  289.     unsigned short                     rgnSize;                    /*size in bytes*/
  290.     Rect                             rgnBBox;                    /*enclosing rectangle*/
  291. };
  292. typedef struct MacRegion                MacRegion;
  293. /*
  294.     The type name "Region" has a name space collision on Win32.
  295.     Use MacRegion to be cross-platfrom safe.
  296. */
  297. #if TARGET_OS_MAC
  298.  
  299. typedef MacRegion                         Region;
  300. #endif  /* TARGET_OS_MAC */
  301.  
  302. typedef MacRegion *                        RgnPtr;
  303. typedef RgnPtr *                        RgnHandle;
  304. #else
  305. typedef struct OpaqueRgnHandle*         RgnHandle;
  306. #endif  /* !OPAQUE_TOOLBOX_STRUCTS */
  307.  
  308.  
  309. struct Picture {
  310.     short                             picSize;
  311.     Rect                             picFrame;
  312. };
  313. typedef struct Picture                    Picture;
  314.  
  315. typedef Picture *                        PicPtr;
  316. typedef PicPtr *                        PicHandle;
  317.  
  318. struct MacPolygon {
  319.     short                             polySize;
  320.     Rect                             polyBBox;
  321.     Point                             polyPoints[1];
  322. };
  323. typedef struct MacPolygon                MacPolygon;
  324. /*
  325.     The type name "Polygon" has a name space collision on Win32.
  326.     Use MacPolygon to be cross-platfrom safe.
  327. */
  328. #if TARGET_OS_MAC
  329.  
  330. typedef MacPolygon                         Polygon;
  331. #endif  /* TARGET_OS_MAC */
  332.  
  333. typedef MacPolygon *                    PolyPtr;
  334. typedef PolyPtr *                        PolyHandle;
  335. typedef CALLBACK_API( void , QDTextProcPtr )(short byteCount, Ptr textBuf, Point numer, Point denom);
  336. typedef CALLBACK_API( void , QDLineProcPtr )(Point newPt);
  337. typedef CALLBACK_API( void , QDRectProcPtr )(GrafVerb verb, Rect *r);
  338. typedef CALLBACK_API( void , QDRRectProcPtr )(GrafVerb verb, Rect *r, short ovalWidth, short ovalHeight);
  339. typedef CALLBACK_API( void , QDOvalProcPtr )(GrafVerb verb, Rect *r);
  340. typedef CALLBACK_API( void , QDArcProcPtr )(GrafVerb verb, Rect *r, short startAngle, short arcAngle);
  341. typedef CALLBACK_API( void , QDPolyProcPtr )(GrafVerb verb, PolyHandle poly);
  342. typedef CALLBACK_API( void , QDRgnProcPtr )(GrafVerb verb, RgnHandle rgn);
  343. typedef CALLBACK_API( void , QDBitsProcPtr )(BitMap *srcBits, Rect *srcRect, Rect *dstRect, short mode, RgnHandle maskRgn);
  344. typedef CALLBACK_API( void , QDCommentProcPtr )(short kind, short dataSize, Handle dataHandle);
  345. typedef CALLBACK_API( short , QDTxMeasProcPtr )(short byteCount, Ptr textAddr, Point *numer, Point *denom, FontInfo *info);
  346. typedef CALLBACK_API( void , QDGetPicProcPtr )(Ptr dataPtr, short byteCount);
  347. typedef CALLBACK_API( void , QDPutPicProcPtr )(Ptr dataPtr, short byteCount);
  348. typedef CALLBACK_API( void , QDOpcodeProcPtr )(Rect *fromRect, Rect *toRect, short opcode, short version);
  349. typedef CALLBACK_API_C( OSStatus , QDStdGlyphsProcPtr )(void *dataStream, ByteCount size);
  350. typedef CALLBACK_API( void , QDJShieldCursorProcPtr )(short left, short top, short right, short bottom);
  351. typedef STACK_UPP_TYPE(QDTextProcPtr)                             QDTextUPP;
  352. typedef STACK_UPP_TYPE(QDLineProcPtr)                             QDLineUPP;
  353. typedef STACK_UPP_TYPE(QDRectProcPtr)                             QDRectUPP;
  354. typedef STACK_UPP_TYPE(QDRRectProcPtr)                             QDRRectUPP;
  355. typedef STACK_UPP_TYPE(QDOvalProcPtr)                             QDOvalUPP;
  356. typedef STACK_UPP_TYPE(QDArcProcPtr)                             QDArcUPP;
  357. typedef STACK_UPP_TYPE(QDPolyProcPtr)                             QDPolyUPP;
  358. typedef STACK_UPP_TYPE(QDRgnProcPtr)                             QDRgnUPP;
  359. typedef STACK_UPP_TYPE(QDBitsProcPtr)                             QDBitsUPP;
  360. typedef STACK_UPP_TYPE(QDCommentProcPtr)                         QDCommentUPP;
  361. typedef STACK_UPP_TYPE(QDTxMeasProcPtr)                         QDTxMeasUPP;
  362. typedef STACK_UPP_TYPE(QDGetPicProcPtr)                         QDGetPicUPP;
  363. typedef STACK_UPP_TYPE(QDPutPicProcPtr)                         QDPutPicUPP;
  364. typedef STACK_UPP_TYPE(QDOpcodeProcPtr)                         QDOpcodeUPP;
  365. typedef STACK_UPP_TYPE(QDStdGlyphsProcPtr)                         QDStdGlyphsUPP;
  366. typedef STACK_UPP_TYPE(QDJShieldCursorProcPtr)                     QDJShieldCursorUPP;
  367.  
  368. struct QDProcs {
  369.     QDTextUPP                         textProc;
  370.     QDLineUPP                         lineProc;
  371.     QDRectUPP                         rectProc;
  372.     QDRRectUPP                         rRectProc;
  373.     QDOvalUPP                         ovalProc;
  374.     QDArcUPP                         arcProc;
  375.     QDPolyUPP                         polyProc;
  376.     QDRgnUPP                         rgnProc;
  377.     QDBitsUPP                         bitsProc;
  378.     QDCommentUPP                     commentProc;
  379.     QDTxMeasUPP                     txMeasProc;
  380.     QDGetPicUPP                     getPicProc;
  381.     QDPutPicUPP                     putPicProc;
  382. };
  383. typedef struct QDProcs                    QDProcs;
  384. typedef QDProcs *                        QDProcsPtr;
  385. #if OPAQUE_UPP_TYPES
  386.     EXTERN_API(QDTextUPP)
  387.     NewQDTextUPP                   (QDTextProcPtr            userRoutine);
  388.  
  389.     EXTERN_API(QDLineUPP)
  390.     NewQDLineUPP                   (QDLineProcPtr            userRoutine);
  391.  
  392.     EXTERN_API(QDRectUPP)
  393.     NewQDRectUPP                   (QDRectProcPtr            userRoutine);
  394.  
  395.     EXTERN_API(QDRRectUPP)
  396.     NewQDRRectUPP                   (QDRRectProcPtr            userRoutine);
  397.  
  398.     EXTERN_API(QDOvalUPP)
  399.     NewQDOvalUPP                   (QDOvalProcPtr            userRoutine);
  400.  
  401.     EXTERN_API(QDArcUPP)
  402.     NewQDArcUPP                       (QDArcProcPtr            userRoutine);
  403.  
  404.     EXTERN_API(QDPolyUPP)
  405.     NewQDPolyUPP                   (QDPolyProcPtr            userRoutine);
  406.  
  407.     EXTERN_API(QDRgnUPP)
  408.     NewQDRgnUPP                       (QDRgnProcPtr            userRoutine);
  409.  
  410.     EXTERN_API(QDBitsUPP)
  411.     NewQDBitsUPP                   (QDBitsProcPtr            userRoutine);
  412.  
  413.     EXTERN_API(QDCommentUPP)
  414.     NewQDCommentUPP                   (QDCommentProcPtr        userRoutine);
  415.  
  416.     EXTERN_API(QDTxMeasUPP)
  417.     NewQDTxMeasUPP                   (QDTxMeasProcPtr            userRoutine);
  418.  
  419.     EXTERN_API(QDGetPicUPP)
  420.     NewQDGetPicUPP                   (QDGetPicProcPtr            userRoutine);
  421.  
  422.     EXTERN_API(QDPutPicUPP)
  423.     NewQDPutPicUPP                   (QDPutPicProcPtr            userRoutine);
  424.  
  425.     EXTERN_API(QDOpcodeUPP)
  426.     NewQDOpcodeUPP                   (QDOpcodeProcPtr            userRoutine);
  427.  
  428.     EXTERN_API(QDStdGlyphsUPP)
  429.     NewQDStdGlyphsUPP               (QDStdGlyphsProcPtr        userRoutine);
  430.  
  431.     EXTERN_API(QDJShieldCursorUPP)
  432.     NewQDJShieldCursorUPP           (QDJShieldCursorProcPtr    userRoutine);
  433.  
  434.     EXTERN_API(void)
  435.     DisposeQDTextUPP               (QDTextUPP                userUPP);
  436.  
  437.     EXTERN_API(void)
  438.     DisposeQDLineUPP               (QDLineUPP                userUPP);
  439.  
  440.     EXTERN_API(void)
  441.     DisposeQDRectUPP               (QDRectUPP                userUPP);
  442.  
  443.     EXTERN_API(void)
  444.     DisposeQDRRectUPP               (QDRRectUPP                userUPP);
  445.  
  446.     EXTERN_API(void)
  447.     DisposeQDOvalUPP               (QDOvalUPP                userUPP);
  448.  
  449.     EXTERN_API(void)
  450.     DisposeQDArcUPP                   (QDArcUPP                userUPP);
  451.  
  452.     EXTERN_API(void)
  453.     DisposeQDPolyUPP               (QDPolyUPP                userUPP);
  454.  
  455.     EXTERN_API(void)
  456.     DisposeQDRgnUPP                   (QDRgnUPP                userUPP);
  457.  
  458.     EXTERN_API(void)
  459.     DisposeQDBitsUPP               (QDBitsUPP                userUPP);
  460.  
  461.     EXTERN_API(void)
  462.     DisposeQDCommentUPP               (QDCommentUPP            userUPP);
  463.  
  464.     EXTERN_API(void)
  465.     DisposeQDTxMeasUPP               (QDTxMeasUPP                userUPP);
  466.  
  467.     EXTERN_API(void)
  468.     DisposeQDGetPicUPP               (QDGetPicUPP                userUPP);
  469.  
  470.     EXTERN_API(void)
  471.     DisposeQDPutPicUPP               (QDPutPicUPP                userUPP);
  472.  
  473.     EXTERN_API(void)
  474.     DisposeQDOpcodeUPP               (QDOpcodeUPP                userUPP);
  475.  
  476.     EXTERN_API(void)
  477.     DisposeQDStdGlyphsUPP           (QDStdGlyphsUPP            userUPP);
  478.  
  479.     EXTERN_API(void)
  480.     DisposeQDJShieldCursorUPP       (QDJShieldCursorUPP        userUPP);
  481.  
  482.     EXTERN_API(void)
  483.     InvokeQDTextUPP                   (short                    byteCount,
  484.                                     Ptr                        textBuf,
  485.                                     Point                    numer,
  486.                                     Point                    denom,
  487.                                     QDTextUPP                userUPP);
  488.  
  489.     EXTERN_API(void)
  490.     InvokeQDLineUPP                   (Point                    newPt,
  491.                                     QDLineUPP                userUPP);
  492.  
  493.     EXTERN_API(void)
  494.     InvokeQDRectUPP                   (GrafVerb                verb,
  495.                                     Rect *                    r,
  496.                                     QDRectUPP                userUPP);
  497.  
  498.     EXTERN_API(void)
  499.     InvokeQDRRectUPP               (GrafVerb                verb,
  500.                                     Rect *                    r,
  501.                                     short                    ovalWidth,
  502.                                     short                    ovalHeight,
  503.                                     QDRRectUPP                userUPP);
  504.  
  505.     EXTERN_API(void)
  506.     InvokeQDOvalUPP                   (GrafVerb                verb,
  507.                                     Rect *                    r,
  508.                                     QDOvalUPP                userUPP);
  509.  
  510.     EXTERN_API(void)
  511.     InvokeQDArcUPP                   (GrafVerb                verb,
  512.                                     Rect *                    r,
  513.                                     short                    startAngle,
  514.                                     short                    arcAngle,
  515.                                     QDArcUPP                userUPP);
  516.  
  517.     EXTERN_API(void)
  518.     InvokeQDPolyUPP                   (GrafVerb                verb,
  519.                                     PolyHandle                poly,
  520.                                     QDPolyUPP                userUPP);
  521.  
  522.     EXTERN_API(void)
  523.     InvokeQDRgnUPP                   (GrafVerb                verb,
  524.                                     RgnHandle                rgn,
  525.                                     QDRgnUPP                userUPP);
  526.  
  527.     EXTERN_API(void)
  528.     InvokeQDBitsUPP                   (BitMap *                srcBits,
  529.                                     Rect *                    srcRect,
  530.                                     Rect *                    dstRect,
  531.                                     short                    mode,
  532.                                     RgnHandle                maskRgn,
  533.                                     QDBitsUPP                userUPP);
  534.  
  535.     EXTERN_API(void)
  536.     InvokeQDCommentUPP               (short                    kind,
  537.                                     short                    dataSize,
  538.                                     Handle                    dataHandle,
  539.                                     QDCommentUPP            userUPP);
  540.  
  541.     EXTERN_API(short)
  542.     InvokeQDTxMeasUPP               (short                    byteCount,
  543.                                     Ptr                        textAddr,
  544.                                     Point *                    numer,
  545.                                     Point *                    denom,
  546.                                     FontInfo *                info,
  547.                                     QDTxMeasUPP                userUPP);
  548.  
  549.     EXTERN_API(void)
  550.     InvokeQDGetPicUPP               (Ptr                        dataPtr,
  551.                                     short                    byteCount,
  552.                                     QDGetPicUPP                userUPP);
  553.  
  554.     EXTERN_API(void)
  555.     InvokeQDPutPicUPP               (Ptr                        dataPtr,
  556.                                     short                    byteCount,
  557.                                     QDPutPicUPP                userUPP);
  558.  
  559.     EXTERN_API(void)
  560.     InvokeQDOpcodeUPP               (Rect *                    fromRect,
  561.                                     Rect *                    toRect,
  562.                                     short                    opcode,
  563.                                     short                    version,
  564.                                     QDOpcodeUPP                userUPP);
  565.  
  566.     EXTERN_API(OSStatus)
  567.     InvokeQDStdGlyphsUPP           (void *                    dataStream,
  568.                                     ByteCount                size,
  569.                                     QDStdGlyphsUPP            userUPP);
  570.  
  571.     EXTERN_API(void)
  572.     InvokeQDJShieldCursorUPP       (short                    left,
  573.                                     short                    top,
  574.                                     short                    right,
  575.                                     short                    bottom,
  576.                                     QDJShieldCursorUPP        userUPP);
  577.  
  578. #else
  579.     enum { uppQDTextProcInfo = 0x00003F80 };                         /* pascal no_return_value Func(2_bytes, 4_bytes, 4_bytes, 4_bytes) */
  580.     enum { uppQDLineProcInfo = 0x000000C0 };                         /* pascal no_return_value Func(4_bytes) */
  581.     enum { uppQDRectProcInfo = 0x00000340 };                         /* pascal no_return_value Func(1_byte, 4_bytes) */
  582.     enum { uppQDRRectProcInfo = 0x00002B40 };                         /* pascal no_return_value Func(1_byte, 4_bytes, 2_bytes, 2_bytes) */
  583.     enum { uppQDOvalProcInfo = 0x00000340 };                         /* pascal no_return_value Func(1_byte, 4_bytes) */
  584.     enum { uppQDArcProcInfo = 0x00002B40 };                         /* pascal no_return_value Func(1_byte, 4_bytes, 2_bytes, 2_bytes) */
  585.     enum { uppQDPolyProcInfo = 0x00000340 };                         /* pascal no_return_value Func(1_byte, 4_bytes) */
  586.     enum { uppQDRgnProcInfo = 0x00000340 };                         /* pascal no_return_value Func(1_byte, 4_bytes) */
  587.     enum { uppQDBitsProcInfo = 0x0000EFC0 };                         /* pascal no_return_value Func(4_bytes, 4_bytes, 4_bytes, 2_bytes, 4_bytes) */
  588.     enum { uppQDCommentProcInfo = 0x00000E80 };                     /* pascal no_return_value Func(2_bytes, 2_bytes, 4_bytes) */
  589.     enum { uppQDTxMeasProcInfo = 0x0000FFA0 };                         /* pascal 2_bytes Func(2_bytes, 4_bytes, 4_bytes, 4_bytes, 4_bytes) */
  590.     enum { uppQDGetPicProcInfo = 0x000002C0 };                         /* pascal no_return_value Func(4_bytes, 2_bytes) */
  591.     enum { uppQDPutPicProcInfo = 0x000002C0 };                         /* pascal no_return_value Func(4_bytes, 2_bytes) */
  592.     enum { uppQDOpcodeProcInfo = 0x00002BC0 };                         /* pascal no_return_value Func(4_bytes, 4_bytes, 2_bytes, 2_bytes) */
  593.     enum { uppQDStdGlyphsProcInfo = 0x000003F1 };                     /* 4_bytes Func(4_bytes, 4_bytes) */
  594.     enum { uppQDJShieldCursorProcInfo = 0x00002A80 };                 /* pascal no_return_value Func(2_bytes, 2_bytes, 2_bytes, 2_bytes) */
  595.     #define NewQDTextUPP(userRoutine)                                 (QDTextUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDTextProcInfo, GetCurrentArchitecture())
  596.     #define NewQDLineUPP(userRoutine)                                 (QDLineUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDLineProcInfo, GetCurrentArchitecture())
  597.     #define NewQDRectUPP(userRoutine)                                 (QDRectUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDRectProcInfo, GetCurrentArchitecture())
  598.     #define NewQDRRectUPP(userRoutine)                                 (QDRRectUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDRRectProcInfo, GetCurrentArchitecture())
  599.     #define NewQDOvalUPP(userRoutine)                                 (QDOvalUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDOvalProcInfo, GetCurrentArchitecture())
  600.     #define NewQDArcUPP(userRoutine)                                 (QDArcUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDArcProcInfo, GetCurrentArchitecture())
  601.     #define NewQDPolyUPP(userRoutine)                                 (QDPolyUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDPolyProcInfo, GetCurrentArchitecture())
  602.     #define NewQDRgnUPP(userRoutine)                                 (QDRgnUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDRgnProcInfo, GetCurrentArchitecture())
  603.     #define NewQDBitsUPP(userRoutine)                                 (QDBitsUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDBitsProcInfo, GetCurrentArchitecture())
  604.     #define NewQDCommentUPP(userRoutine)                             (QDCommentUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDCommentProcInfo, GetCurrentArchitecture())
  605.     #define NewQDTxMeasUPP(userRoutine)                             (QDTxMeasUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDTxMeasProcInfo, GetCurrentArchitecture())
  606.     #define NewQDGetPicUPP(userRoutine)                             (QDGetPicUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDGetPicProcInfo, GetCurrentArchitecture())
  607.     #define NewQDPutPicUPP(userRoutine)                             (QDPutPicUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDPutPicProcInfo, GetCurrentArchitecture())
  608.     #define NewQDOpcodeUPP(userRoutine)                             (QDOpcodeUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDOpcodeProcInfo, GetCurrentArchitecture())
  609.     #define NewQDStdGlyphsUPP(userRoutine)                             (QDStdGlyphsUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDStdGlyphsProcInfo, GetCurrentArchitecture())
  610.     #define NewQDJShieldCursorUPP(userRoutine)                         (QDJShieldCursorUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDJShieldCursorProcInfo, GetCurrentArchitecture())
  611.     #define DisposeQDTextUPP(userUPP)                                 DisposeRoutineDescriptor(userUPP)
  612.     #define DisposeQDLineUPP(userUPP)                                 DisposeRoutineDescriptor(userUPP)
  613.     #define DisposeQDRectUPP(userUPP)                                 DisposeRoutineDescriptor(userUPP)
  614.     #define DisposeQDRRectUPP(userUPP)                                 DisposeRoutineDescriptor(userUPP)
  615.     #define DisposeQDOvalUPP(userUPP)                                 DisposeRoutineDescriptor(userUPP)
  616.     #define DisposeQDArcUPP(userUPP)                                 DisposeRoutineDescriptor(userUPP)
  617.     #define DisposeQDPolyUPP(userUPP)                                 DisposeRoutineDescriptor(userUPP)
  618.     #define DisposeQDRgnUPP(userUPP)                                 DisposeRoutineDescriptor(userUPP)
  619.     #define DisposeQDBitsUPP(userUPP)                                 DisposeRoutineDescriptor(userUPP)
  620.     #define DisposeQDCommentUPP(userUPP)                             DisposeRoutineDescriptor(userUPP)
  621.     #define DisposeQDTxMeasUPP(userUPP)                             DisposeRoutineDescriptor(userUPP)
  622.     #define DisposeQDGetPicUPP(userUPP)                             DisposeRoutineDescriptor(userUPP)
  623.     #define DisposeQDPutPicUPP(userUPP)                             DisposeRoutineDescriptor(userUPP)
  624.     #define DisposeQDOpcodeUPP(userUPP)                             DisposeRoutineDescriptor(userUPP)
  625.     #define DisposeQDStdGlyphsUPP(userUPP)                             DisposeRoutineDescriptor(userUPP)
  626.     #define DisposeQDJShieldCursorUPP(userUPP)                         DisposeRoutineDescriptor(userUPP)
  627.     #define InvokeQDTextUPP(byteCount, textBuf, numer, denom, userUPP)  CALL_FOUR_PARAMETER_UPP((userUPP), uppQDTextProcInfo, (byteCount), (textBuf), (numer), (denom))
  628.     #define InvokeQDLineUPP(newPt, userUPP)                         CALL_ONE_PARAMETER_UPP((userUPP), uppQDLineProcInfo, (newPt))
  629.     #define InvokeQDRectUPP(verb, r, userUPP)                         CALL_TWO_PARAMETER_UPP((userUPP), uppQDRectProcInfo, (verb), (r))
  630.     #define InvokeQDRRectUPP(verb, r, ovalWidth, ovalHeight, userUPP)  CALL_FOUR_PARAMETER_UPP((userUPP), uppQDRRectProcInfo, (verb), (r), (ovalWidth), (ovalHeight))
  631.     #define InvokeQDOvalUPP(verb, r, userUPP)                         CALL_TWO_PARAMETER_UPP((userUPP), uppQDOvalProcInfo, (verb), (r))
  632.     #define InvokeQDArcUPP(verb, r, startAngle, arcAngle, userUPP)     CALL_FOUR_PARAMETER_UPP((userUPP), uppQDArcProcInfo, (verb), (r), (startAngle), (arcAngle))
  633.     #define InvokeQDPolyUPP(verb, poly, userUPP)                     CALL_TWO_PARAMETER_UPP((userUPP), uppQDPolyProcInfo, (verb), (poly))
  634.     #define InvokeQDRgnUPP(verb, rgn, userUPP)                         CALL_TWO_PARAMETER_UPP((userUPP), uppQDRgnProcInfo, (verb), (rgn))
  635.     #define InvokeQDBitsUPP(srcBits, srcRect, dstRect, mode, maskRgn, userUPP)  CALL_FIVE_PARAMETER_UPP((userUPP), uppQDBitsProcInfo, (srcBits), (srcRect), (dstRect), (mode), (maskRgn))
  636.     #define InvokeQDCommentUPP(kind, dataSize, dataHandle, userUPP)  CALL_THREE_PARAMETER_UPP((userUPP), uppQDCommentProcInfo, (kind), (dataSize), (dataHandle))
  637.     #define InvokeQDTxMeasUPP(byteCount, textAddr, numer, denom, info, userUPP)  (short)CALL_FIVE_PARAMETER_UPP((userUPP), uppQDTxMeasProcInfo, (byteCount), (textAddr), (numer), (denom), (info))
  638.     #define InvokeQDGetPicUPP(dataPtr, byteCount, userUPP)             CALL_TWO_PARAMETER_UPP((userUPP), uppQDGetPicProcInfo, (dataPtr), (byteCount))
  639.     #define InvokeQDPutPicUPP(dataPtr, byteCount, userUPP)             CALL_TWO_PARAMETER_UPP((userUPP), uppQDPutPicProcInfo, (dataPtr), (byteCount))
  640.     #define InvokeQDOpcodeUPP(fromRect, toRect, opcode, version, userUPP)  CALL_FOUR_PARAMETER_UPP((userUPP), uppQDOpcodeProcInfo, (fromRect), (toRect), (opcode), (version))
  641.     #define InvokeQDStdGlyphsUPP(dataStream, size, userUPP)         (OSStatus)CALL_TWO_PARAMETER_UPP((userUPP), uppQDStdGlyphsProcInfo, (dataStream), (size))
  642.     #define InvokeQDJShieldCursorUPP(left, top, right, bottom, userUPP)  CALL_FOUR_PARAMETER_UPP((userUPP), uppQDJShieldCursorProcInfo, (left), (top), (right), (bottom))
  643. #endif
  644. /* support for pre-Carbon UPP routines: NewXXXProc and CallXXXProc */
  645. #define NewQDTextProc(userRoutine)                                 NewQDTextUPP(userRoutine)
  646. #define NewQDLineProc(userRoutine)                                 NewQDLineUPP(userRoutine)
  647. #define NewQDRectProc(userRoutine)                                 NewQDRectUPP(userRoutine)
  648. #define NewQDRRectProc(userRoutine)                             NewQDRRectUPP(userRoutine)
  649. #define NewQDOvalProc(userRoutine)                                 NewQDOvalUPP(userRoutine)
  650. #define NewQDArcProc(userRoutine)                                 NewQDArcUPP(userRoutine)
  651. #define NewQDPolyProc(userRoutine)                                 NewQDPolyUPP(userRoutine)
  652. #define NewQDRgnProc(userRoutine)                                 NewQDRgnUPP(userRoutine)
  653. #define NewQDBitsProc(userRoutine)                                 NewQDBitsUPP(userRoutine)
  654. #define NewQDCommentProc(userRoutine)                             NewQDCommentUPP(userRoutine)
  655. #define NewQDTxMeasProc(userRoutine)                             NewQDTxMeasUPP(userRoutine)
  656. #define NewQDGetPicProc(userRoutine)                             NewQDGetPicUPP(userRoutine)
  657. #define NewQDPutPicProc(userRoutine)                             NewQDPutPicUPP(userRoutine)
  658. #define NewQDOpcodeProc(userRoutine)                             NewQDOpcodeUPP(userRoutine)
  659. #define NewQDStdGlyphsProc(userRoutine)                         NewQDStdGlyphsUPP(userRoutine)
  660. #define NewQDJShieldCursorProc(userRoutine)                     NewQDJShieldCursorUPP(userRoutine)
  661. #define CallQDTextProc(userRoutine, byteCount, textBuf, numer, denom) InvokeQDTextUPP(byteCount, textBuf, numer, denom, userRoutine)
  662. #define CallQDLineProc(userRoutine, newPt)                        InvokeQDLineUPP(newPt, userRoutine)
  663. #define CallQDRectProc(userRoutine, verb, r)                    InvokeQDRectUPP(verb, r, userRoutine)
  664. #define CallQDRRectProc(userRoutine, verb, r, ovalWidth, ovalHeight) InvokeQDRRectUPP(verb, r, ovalWidth, ovalHeight, userRoutine)
  665. #define CallQDOvalProc(userRoutine, verb, r)                    InvokeQDOvalUPP(verb, r, userRoutine)
  666. #define CallQDArcProc(userRoutine, verb, r, startAngle, arcAngle) InvokeQDArcUPP(verb, r, startAngle, arcAngle, userRoutine)
  667. #define CallQDPolyProc(userRoutine, verb, poly)                    InvokeQDPolyUPP(verb, poly, userRoutine)
  668. #define CallQDRgnProc(userRoutine, verb, rgn)                    InvokeQDRgnUPP(verb, rgn, userRoutine)
  669. #define CallQDBitsProc(userRoutine, srcBits, srcRect, dstRect, mode, maskRgn) InvokeQDBitsUPP(srcBits, srcRect, dstRect, mode, maskRgn, userRoutine)
  670. #define CallQDCommentProc(userRoutine, kind, dataSize, dataHandle) InvokeQDCommentUPP(kind, dataSize, dataHandle, userRoutine)
  671. #define CallQDTxMeasProc(userRoutine, byteCount, textAddr, numer, denom, info) InvokeQDTxMeasUPP(byteCount, textAddr, numer, denom, info, userRoutine)
  672. #define CallQDGetPicProc(userRoutine, dataPtr, byteCount)        InvokeQDGetPicUPP(dataPtr, byteCount, userRoutine)
  673. #define CallQDPutPicProc(userRoutine, dataPtr, byteCount)        InvokeQDPutPicUPP(dataPtr, byteCount, userRoutine)
  674. #define CallQDOpcodeProc(userRoutine, fromRect, toRect, opcode, version) InvokeQDOpcodeUPP(fromRect, toRect, opcode, version, userRoutine)
  675. #define CallQDStdGlyphsProc(userRoutine, dataStream, size)        InvokeQDStdGlyphsUPP(dataStream, size, userRoutine)
  676. #define CallQDJShieldCursorProc(userRoutine, left, top, right, bottom) InvokeQDJShieldCursorUPP(left, top, right, bottom, userRoutine)
  677. #if !OPAQUE_TOOLBOX_STRUCTS
  678.  
  679. struct GrafPort {
  680.     short                             device;
  681.     BitMap                             portBits;
  682.     Rect                             portRect;
  683.     RgnHandle                         visRgn;
  684.     RgnHandle                         clipRgn;
  685.     Pattern                         bkPat;
  686.     Pattern                         fillPat;
  687.     Point                             pnLoc;
  688.     Point                             pnSize;
  689.     short                             pnMode;
  690.     Pattern                         pnPat;
  691.     short                             pnVis;
  692.     short                             txFont;
  693.     StyleField                         txFace;                        /*StyleField occupies 16-bits, but only first 8-bits are used*/
  694.     UInt8                             txFlags;                    /* QuickTime uses second 8 bits of StyleField for txFlags */
  695.     short                             txMode;
  696.     short                             txSize;
  697.     Fixed                             spExtra;
  698.     long                             fgColor;
  699.     long                             bkColor;
  700.     short                             colrBit;
  701.     short                             patStretch;
  702.     Handle                             picSave;
  703.     Handle                             rgnSave;
  704.     Handle                             polySave;
  705.     QDProcsPtr                         grafProcs;
  706. };
  707. typedef struct GrafPort                    GrafPort;
  708.  
  709. typedef GrafPort *                        GrafPtr;
  710. /*
  711.  *    This set of definitions "belongs" in Windows.
  712.  *    But, there is a circularity in the headers where Windows includes Controls and
  713.  *    Controls includes Windows. To break the circle, the information
  714.  *    needed by Controls is moved from Windows to Quickdraw.
  715.  */
  716. typedef GrafPtr                         WindowPtr;
  717. typedef WindowPtr                         DialogPtr;
  718. #else
  719. typedef struct OpaqueWindowPtr*         WindowPtr;
  720. typedef struct OpaqueDialogPtr*         DialogPtr;
  721. typedef struct OpaqueGrafPtr*             GrafPtr;
  722. #endif  /* !OPAQUE_TOOLBOX_STRUCTS */
  723.  
  724. typedef WindowPtr                         WindowRef;
  725. /* DragConstraint constants to pass to DragGray,DragTheRgn, or ConstrainedDragRgn*/
  726. typedef UInt16                             DragConstraint;
  727. enum {
  728.     kNoConstraint                = 0,
  729.     kVerticalConstraint            = 1,
  730.     kHorizontalConstraint        = 2
  731. };
  732.  
  733.  
  734. typedef CALLBACK_API( void , DragGrayRgnProcPtr )(void );
  735. /*
  736.  *    Here ends the list of things that "belong" in Windows.
  737.  */
  738.  
  739.  
  740.  
  741. struct RGBColor {
  742.     unsigned short                     red;                        /*magnitude of red component*/
  743.     unsigned short                     green;                        /*magnitude of green component*/
  744.     unsigned short                     blue;                        /*magnitude of blue component*/
  745. };
  746. typedef struct RGBColor                    RGBColor;
  747. typedef RGBColor *                        RGBColorPtr;
  748. typedef RGBColorPtr *                    RGBColorHdl;
  749. typedef CALLBACK_API( Boolean , ColorSearchProcPtr )(RGBColor *rgb, long *position);
  750. typedef CALLBACK_API( Boolean , ColorComplementProcPtr )(RGBColor *rgb);
  751. typedef STACK_UPP_TYPE(DragGrayRgnProcPtr)                         DragGrayRgnUPP;
  752. typedef STACK_UPP_TYPE(ColorSearchProcPtr)                         ColorSearchUPP;
  753. typedef STACK_UPP_TYPE(ColorComplementProcPtr)                     ColorComplementUPP;
  754. #if OPAQUE_UPP_TYPES
  755.     EXTERN_API(DragGrayRgnUPP)
  756.     NewDragGrayRgnUPP               (DragGrayRgnProcPtr        userRoutine);
  757.  
  758.     EXTERN_API(ColorSearchUPP)
  759.     NewColorSearchUPP               (ColorSearchProcPtr        userRoutine);
  760.  
  761.     EXTERN_API(ColorComplementUPP)
  762.     NewColorComplementUPP           (ColorComplementProcPtr    userRoutine);
  763.  
  764.     EXTERN_API(void)
  765.     DisposeDragGrayRgnUPP           (DragGrayRgnUPP            userUPP);
  766.  
  767.     EXTERN_API(void)
  768.     DisposeColorSearchUPP           (ColorSearchUPP            userUPP);
  769.  
  770.     EXTERN_API(void)
  771.     DisposeColorComplementUPP       (ColorComplementUPP        userUPP);
  772.  
  773.     EXTERN_API(void)
  774.     InvokeDragGrayRgnUPP           (DragGrayRgnUPP            userUPP);
  775.  
  776.     EXTERN_API(Boolean)
  777.     InvokeColorSearchUPP           (RGBColor *                rgb,
  778.                                     long *                    position,
  779.                                     ColorSearchUPP            userUPP);
  780.  
  781.     EXTERN_API(Boolean)
  782.     InvokeColorComplementUPP       (RGBColor *                rgb,
  783.                                     ColorComplementUPP        userUPP);
  784.  
  785. #else
  786.     enum { uppDragGrayRgnProcInfo = 0x00000000 };                     /* pascal no_return_value Func() */
  787.     enum { uppColorSearchProcInfo = 0x000003D0 };                     /* pascal 1_byte Func(4_bytes, 4_bytes) */
  788.     enum { uppColorComplementProcInfo = 0x000000D0 };                 /* pascal 1_byte Func(4_bytes) */
  789.     #define NewDragGrayRgnUPP(userRoutine)                             (DragGrayRgnUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppDragGrayRgnProcInfo, GetCurrentArchitecture())
  790.     #define NewColorSearchUPP(userRoutine)                             (ColorSearchUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppColorSearchProcInfo, GetCurrentArchitecture())
  791.     #define NewColorComplementUPP(userRoutine)                         (ColorComplementUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppColorComplementProcInfo, GetCurrentArchitecture())
  792.     #define DisposeDragGrayRgnUPP(userUPP)                             DisposeRoutineDescriptor(userUPP)
  793.     #define DisposeColorSearchUPP(userUPP)                             DisposeRoutineDescriptor(userUPP)
  794.     #define DisposeColorComplementUPP(userUPP)                         DisposeRoutineDescriptor(userUPP)
  795.     #define InvokeDragGrayRgnUPP(userUPP)                             CALL_ZERO_PARAMETER_UPP((userUPP), uppDragGrayRgnProcInfo)
  796.     #define InvokeColorSearchUPP(rgb, position, userUPP)             (Boolean)CALL_TWO_PARAMETER_UPP((userUPP), uppColorSearchProcInfo, (rgb), (position))
  797.     #define InvokeColorComplementUPP(rgb, userUPP)                     (Boolean)CALL_ONE_PARAMETER_UPP((userUPP), uppColorComplementProcInfo, (rgb))
  798. #endif
  799. /* support for pre-Carbon UPP routines: NewXXXProc and CallXXXProc */
  800. #define NewDragGrayRgnProc(userRoutine)                         NewDragGrayRgnUPP(userRoutine)
  801. #define NewColorSearchProc(userRoutine)                         NewColorSearchUPP(userRoutine)
  802. #define NewColorComplementProc(userRoutine)                     NewColorComplementUPP(userRoutine)
  803. #define CallDragGrayRgnProc(userRoutine)                        InvokeDragGrayRgnUPP(userRoutine)
  804. #define CallColorSearchProc(userRoutine, rgb, position)            InvokeColorSearchUPP(rgb, position, userRoutine)
  805. #define CallColorComplementProc(userRoutine, rgb)                InvokeColorComplementUPP(rgb, userRoutine)
  806.  
  807. struct ColorSpec {
  808.     short                             value;                        /*index or other value*/
  809.     RGBColor                         rgb;                        /*true color*/
  810. };
  811. typedef struct ColorSpec                ColorSpec;
  812. typedef ColorSpec *                        ColorSpecPtr;
  813.  
  814. typedef ColorSpec                         CSpecArray[1];
  815.  
  816. struct ColorTable {
  817.     long                             ctSeed;                        /*unique identifier for table*/
  818.     short                             ctFlags;                    /*high bit: 0 = PixMap; 1 = device*/
  819.     short                             ctSize;                        /*number of entries in CTTable*/
  820.     CSpecArray                         ctTable;                    /*array [0..0] of ColorSpec*/
  821. };
  822. typedef struct ColorTable                ColorTable;
  823.  
  824. typedef ColorTable *                    CTabPtr;
  825. typedef CTabPtr *                        CTabHandle;
  826.  
  827. struct xColorSpec {
  828.     short                             value;                        /*index or other value*/
  829.     RGBColor                         rgb;                        /*true color*/
  830.     short                             xalpha;
  831. };
  832. typedef struct xColorSpec                xColorSpec;
  833. typedef xColorSpec *                    xColorSpecPtr;
  834.  
  835. typedef xColorSpec                         xCSpecArray[1];
  836.  
  837. struct MatchRec {
  838.     unsigned short                     red;
  839.     unsigned short                     green;
  840.     unsigned short                     blue;
  841.     long                             matchData;
  842. };
  843. typedef struct MatchRec                    MatchRec;
  844. /*
  845.     QuickTime 3.0 makes PixMap data structure available on non-Mac OS's.
  846.     In order to implement PixMap in these alternate environments, the PixMap
  847.     had to be extended. The pmReserved field was changed to pmExt which is
  848.     a Handle to extra info.  The planeBytes field was changed to pixelFormat.
  849.     
  850.     In OS X, Quickdraw also uses the new PixMap data structure.
  851. */
  852. #ifndef OLDPIXMAPSTRUCT
  853. #if TARGET_OS_MAC && TARGET_API_MAC_OS8
  854. #define OLDPIXMAPSTRUCT 1
  855. #else
  856. #define OLDPIXMAPSTRUCT 0
  857. #endif  /* TARGET_OS_MAC && TARGET_API_MAC_OS8 */
  858.  
  859. #endif  /* !defined(OLDPIXMAPSTRUCT) */
  860.  
  861.  
  862. #if OLDPIXMAPSTRUCT
  863.     #define GETPIXMAPPIXELFORMAT(pm)        ( (pm)->pixelSize )
  864. #else
  865.     #define GETPIXMAPPIXELFORMAT(pm)        ( ((pm)->pixelFormat != 0) ? (pm)->pixelFormat : (pm)->pixelSize )
  866. #endif
  867.  
  868.  
  869. #if TARGET_OS_MAC && TARGET_API_MAC_OS8
  870.     #define NON_MAC_PIXEL_FORMATS   0
  871. #else
  872.     #define NON_MAC_PIXEL_FORMATS   1
  873. #endif
  874.  
  875. /* pixel formats*/
  876. enum {
  877.     k1MonochromePixelFormat        = 0x00000001,                    /* 1 bit indexed*/
  878.     k2IndexedPixelFormat        = 0x00000002,                    /* 2 bit indexed*/
  879.     k4IndexedPixelFormat        = 0x00000004,                    /* 4 bit indexed*/
  880.     k8IndexedPixelFormat        = 0x00000008,                    /* 8 bit indexed*/
  881.     k16BE555PixelFormat            = 0x00000010,                    /* 16 bit BE rgb 555 (Mac)*/
  882.     k24RGBPixelFormat            = 0x00000018,                    /* 24 bit rgb */
  883.     k32ARGBPixelFormat            = 0x00000020,                    /* 32 bit argb    (Mac)*/
  884.     k1IndexedGrayPixelFormat    = 0x00000021,                    /* 1 bit indexed gray*/
  885.     k2IndexedGrayPixelFormat    = 0x00000022,                    /* 2 bit indexed gray*/
  886.     k4IndexedGrayPixelFormat    = 0x00000024,                    /* 4 bit indexed gray*/
  887.     k8IndexedGrayPixelFormat    = 0x00000028                    /* 8 bit indexed gray*/
  888. };
  889.  
  890.  
  891. /* values for PixMap.pixelFormat*/
  892. enum {
  893.     k16LE555PixelFormat            = FOUR_CHAR_CODE('L555'),        /* 16 bit LE rgb 555 (PC)*/
  894.     k16LE5551PixelFormat        = FOUR_CHAR_CODE('5551'),        /* 16 bit LE rgb 5551*/
  895.     k16BE565PixelFormat            = FOUR_CHAR_CODE('B565'),        /* 16 bit BE rgb 565*/
  896.     k16LE565PixelFormat            = FOUR_CHAR_CODE('L565'),        /* 16 bit LE rgb 565*/
  897.     k24BGRPixelFormat            = FOUR_CHAR_CODE('24BG'),        /* 24 bit bgr */
  898.     k32BGRAPixelFormat            = FOUR_CHAR_CODE('BGRA'),        /* 32 bit bgra    (Matrox)*/
  899.     k32ABGRPixelFormat            = FOUR_CHAR_CODE('ABGR'),        /* 32 bit abgr    */
  900.     k32RGBAPixelFormat            = FOUR_CHAR_CODE('RGBA'),        /* 32 bit rgba    */
  901.     kYUVSPixelFormat            = FOUR_CHAR_CODE('yuvs'),        /* YUV 4:2:2 byte ordering 16-unsigned = 'YUY2'*/
  902.     kYUVUPixelFormat            = FOUR_CHAR_CODE('yuvu'),        /* YUV 4:2:2 byte ordering 16-signed*/
  903.     kYVU9PixelFormat            = FOUR_CHAR_CODE('YVU9'),        /* YVU9 Planar    9*/
  904.     kYUV411PixelFormat            = FOUR_CHAR_CODE('Y411'),        /* YUV 4:1:1 Interleaved    16*/
  905.     kYVYU422PixelFormat            = FOUR_CHAR_CODE('YVYU'),        /* YVYU 4:2:2 byte ordering    16*/
  906.     kUYVY422PixelFormat            = FOUR_CHAR_CODE('UYVY'),        /* UYVY 4:2:2 byte ordering    16*/
  907.     kYUV211PixelFormat            = FOUR_CHAR_CODE('Y211'),        /* YUV 2:1:1 Packed    8*/
  908.     k2vuyPixelFormat            = FOUR_CHAR_CODE('2vuy')        /* UYVY 4:2:2 byte ordering    16*/
  909. };
  910.  
  911. #if !OLDPIXMAPSTRUCT
  912.  
  913. struct PixMapExtension {
  914.     long                             extSize;                    /*size of struct, duh!*/
  915.     unsigned long                     pmBits;                        /*pixmap attributes bitfield*/
  916.     void *                            pmGD;                        /*this is a GDHandle*/
  917.     long                             pmSeed;
  918.     Fixed                             gammaLevel;                    /*pixmap gammalevel*/
  919.     Fixed                             requestedGammaLevel;
  920.     unsigned long                     reserved2;
  921.     long                             longRowBytes;                /*used when rowBytes > 16382*/
  922.     unsigned long                     signature;
  923.     Handle                             baseAddrHandle;
  924. };
  925. typedef struct PixMapExtension            PixMapExtension;
  926.  
  927. typedef PixMapExtension *                PixMapExtPtr;
  928. typedef PixMapExtPtr *                    PixMapExtHandle;
  929. #endif  /* !OLDPIXMAPSTRUCT */
  930.  
  931.  
  932. struct PixMap {
  933.     Ptr                             baseAddr;                    /*pointer to pixels*/
  934.     short                             rowBytes;                    /*offset to next line*/
  935.     Rect                             bounds;                        /*encloses bitmap*/
  936.     short                             pmVersion;                    /*pixMap version number*/
  937.     short                             packType;                    /*defines packing format*/
  938.     long                             packSize;                    /*length of pixel data*/
  939.     Fixed                             hRes;                        /*horiz. resolution (ppi)*/
  940.     Fixed                             vRes;                        /*vert. resolution (ppi)*/
  941.     short                             pixelType;                    /*defines pixel type*/
  942.     short                             pixelSize;                    /*# bits in pixel*/
  943.     short                             cmpCount;                    /*# components in pixel*/
  944.     short                             cmpSize;                    /*# bits per component*/
  945. #if OLDPIXMAPSTRUCT
  946.     long                             planeBytes;                    /*offset to next plane*/
  947.     CTabHandle                         pmTable;                    /*color map for this pixMap*/
  948.     long                             pmReserved;
  949. #else
  950.     OSType                             pixelFormat;                /*fourCharCode representation*/
  951.     CTabHandle                         pmTable;                    /*color map for this pixMap*/
  952.     PixMapExtHandle                    pmExt;                        /*Handle to pixMap extension*/
  953. #endif
  954. };
  955. typedef struct PixMap                    PixMap;
  956. typedef PixMap *                        PixMapPtr;
  957. typedef PixMapPtr *                        PixMapHandle;
  958.  
  959. struct PixPat {
  960.     short                             patType;                    /*type of pattern*/
  961.     PixMapHandle                     patMap;                        /*the pattern's pixMap*/
  962.     Handle                             patData;                    /*pixmap's data*/
  963.     Handle                             patXData;                    /*expanded Pattern data*/
  964.     short                             patXValid;                    /*flags whether expanded Pattern valid*/
  965.     Handle                             patXMap;                    /*Handle to expanded Pattern data*/
  966.     Pattern                         pat1Data;                    /*old-Style pattern/RGB color*/
  967. };
  968. typedef struct PixPat                    PixPat;
  969. typedef PixPat *                        PixPatPtr;
  970. typedef PixPatPtr *                        PixPatHandle;
  971.  
  972. struct CCrsr {
  973.     short                             crsrType;                    /*type of cursor*/
  974.     PixMapHandle                     crsrMap;                    /*the cursor's pixmap*/
  975.     Handle                             crsrData;                    /*cursor's data*/
  976.     Handle                             crsrXData;                    /*expanded cursor data*/
  977.     short                             crsrXValid;                    /*depth of expanded data (0 if none)*/
  978.     Handle                             crsrXHandle;                /*future use*/
  979.     Bits16                             crsr1Data;                    /*one-bit cursor*/
  980.     Bits16                             crsrMask;                    /*cursor's mask*/
  981.     Point                             crsrHotSpot;                /*cursor's hotspot*/
  982.     long                             crsrXTable;                    /*private*/
  983.     long                             crsrID;                        /*private*/
  984. };
  985. typedef struct CCrsr                    CCrsr;
  986. typedef CCrsr *                            CCrsrPtr;
  987. typedef CCrsrPtr *                        CCrsrHandle;
  988.  
  989. struct GammaTbl {
  990.     short                             gVersion;                    /*gamma version number*/
  991.     short                             gType;                        /*gamma data type*/
  992.     short                             gFormulaSize;                /*Formula data size*/
  993.     short                             gChanCnt;                    /*number of channels of data*/
  994.     short                             gDataCnt;                    /*number of values/channel*/
  995.     short                             gDataWidth;                    /*bits/corrected value (data packed to next larger byte size)*/
  996.     short                             gFormulaData[1];            /*data for formulas followed by gamma values*/
  997. };
  998. typedef struct GammaTbl                    GammaTbl;
  999. typedef GammaTbl *                        GammaTblPtr;
  1000. typedef GammaTblPtr *                    GammaTblHandle;
  1001.  
  1002. struct ITab {
  1003.     long                             iTabSeed;                    /*copy of CTSeed from source CTable*/
  1004.     short                             iTabRes;                    /*bits/channel resolution of iTable*/
  1005.     Byte                             iTTable[1];                    /*byte colortable index values*/
  1006. };
  1007. typedef struct ITab                        ITab;
  1008. typedef ITab *                            ITabPtr;
  1009. typedef ITabPtr *                        ITabHandle;
  1010.  
  1011. struct SProcRec {
  1012.     Handle                             nxtSrch;                    /*SProcHndl Handle to next SProcRec*/
  1013.     ColorSearchUPP                     srchProc;                    /*search procedure proc ptr*/
  1014. };
  1015. typedef struct SProcRec                    SProcRec;
  1016.  
  1017. typedef SProcRec *                        SProcPtr;
  1018. typedef SProcPtr *                        SProcHndl;
  1019.  
  1020. struct CProcRec {
  1021.     Handle                             nxtComp;                    /*CProcHndl Handle to next CProcRec*/
  1022.     ColorComplementUPP                 compProc;                    /*complement procedure proc ptr*/
  1023. };
  1024. typedef struct CProcRec                    CProcRec;
  1025.  
  1026. typedef CProcRec *                        CProcPtr;
  1027. typedef CProcPtr *                        CProcHndl;
  1028. /*
  1029.     QuickTime 3.0 makes GDevice data structure available on non-Mac OS's.
  1030.     In order to implement GDevice in these alternate environments, the GDevice
  1031.     had to be extended. The gdReserved field was changed to gdExt which is
  1032.     a Handle to extra info.  
  1033. */
  1034. #ifndef OLDGDEVICESTRUCT
  1035. #if TARGET_OS_MAC && TARGET_API_MAC_OS8
  1036. #define OLDGDEVICESTRUCT 1
  1037. #else
  1038. #define OLDGDEVICESTRUCT 0
  1039. #endif  /* TARGET_OS_MAC && TARGET_API_MAC_OS8 */
  1040.  
  1041. #endif  /* !defined(OLDGDEVICESTRUCT) */
  1042.  
  1043. typedef struct GDevice                     GDevice;
  1044. typedef GDevice *                        GDPtr;
  1045. typedef GDPtr *                            GDHandle;
  1046.  
  1047. struct GDevice {
  1048.     short                             gdRefNum;                    /*driver's unit number*/
  1049.     short                             gdID;                        /*client ID for search procs*/
  1050.     short                             gdType;                        /*fixed/CLUT/direct*/
  1051.     ITabHandle                         gdITable;                    /*Handle to inverse lookup table*/
  1052.     short                             gdResPref;                    /*preferred resolution of GDITable*/
  1053.     SProcHndl                         gdSearchProc;                /*search proc list head*/
  1054.     CProcHndl                         gdCompProc;                    /*complement proc list*/
  1055.     short                             gdFlags;                    /*grafDevice flags word*/
  1056.     PixMapHandle                     gdPMap;                        /*describing pixMap*/
  1057.     long                             gdRefCon;                    /*reference value*/
  1058.     GDHandle                         gdNextGD;                    /*GDHandle Handle of next gDevice*/
  1059.     Rect                             gdRect;                        /* device's bounds in global coordinates*/
  1060.     long                             gdMode;                        /*device's current mode*/
  1061.     short                             gdCCBytes;                    /*depth of expanded cursor data*/
  1062.     short                             gdCCDepth;                    /*depth of expanded cursor data*/
  1063.     Handle                             gdCCXData;                    /*Handle to cursor's expanded data*/
  1064.     Handle                             gdCCXMask;                    /*Handle to cursor's expanded mask*/
  1065. #if OLDGDEVICESTRUCT
  1066.     long                             gdReserved;                    /*future use. MUST BE 0*/
  1067. #else
  1068.     Handle                             gdExt;                        /*QuickTime 3.0 private info*/
  1069. #endif
  1070. };
  1071.  
  1072.  
  1073. struct GrafVars {
  1074.     RGBColor                         rgbOpColor;                    /*color for addPin  subPin and average*/
  1075.     RGBColor                         rgbHiliteColor;                /*color for hiliting*/
  1076.     Handle                             pmFgColor;                    /*palette Handle for foreground color*/
  1077.     short                             pmFgIndex;                    /*index value for foreground*/
  1078.     Handle                             pmBkColor;                    /*palette Handle for background color*/
  1079.     short                             pmBkIndex;                    /*index value for background*/
  1080.     short                             pmFlags;                    /*flags for Palette Manager*/
  1081. };
  1082. typedef struct GrafVars                    GrafVars;
  1083.  
  1084. typedef GrafVars *                        GVarPtr;
  1085. typedef GVarPtr *                        GVarHandle;
  1086.  
  1087. #if OPAQUE_TOOLBOX_STRUCTS
  1088. typedef GrafPtr                         CGrafPtr;
  1089. #else
  1090. typedef struct CGrafPort                 CGrafPort;
  1091. typedef CGrafPort *                        CGrafPtr;
  1092. #endif  /* OPAQUE_TOOLBOX_STRUCTS */
  1093.  
  1094. typedef CALLBACK_API_C( OSStatus , QDPrinterStatusProcPtr )(PrinterStatusOpcode opcode, CGrafPtr currentPort, void *printerStatus);
  1095. typedef STACK_UPP_TYPE(QDPrinterStatusProcPtr)                     QDPrinterStatusUPP;
  1096.  
  1097.  
  1098. struct CQDProcs {
  1099.     QDTextUPP                         textProc;
  1100.     QDLineUPP                         lineProc;
  1101.     QDRectUPP                         rectProc;
  1102.     QDRRectUPP                         rRectProc;
  1103.     QDOvalUPP                         ovalProc;
  1104.     QDArcUPP                         arcProc;
  1105.     QDPolyUPP                         polyProc;
  1106.     QDRgnUPP                         rgnProc;
  1107.     QDBitsUPP                         bitsProc;
  1108.     QDCommentUPP                     commentProc;
  1109.     QDTxMeasUPP                     txMeasProc;
  1110.     QDGetPicUPP                     getPicProc;
  1111.     QDPutPicUPP                     putPicProc;
  1112.     QDOpcodeUPP                     opcodeProc;
  1113.     UniversalProcPtr                 newProc1;                    /* this is the StdPix bottleneck -- see ImageCompression.h */
  1114.     QDStdGlyphsUPP                     glyphsProc;                    /* was newProc2; now used in Unicode text drawing */
  1115.     QDPrinterStatusUPP                 printerStatusProc;            /* was newProc3;  now used to communicate status between Printing code and System imaging code */
  1116.     UniversalProcPtr                 newProc4;
  1117.     UniversalProcPtr                 newProc5;
  1118.     UniversalProcPtr                 newProc6;
  1119. };
  1120. typedef struct CQDProcs                    CQDProcs;
  1121. typedef CQDProcs *                        CQDProcsPtr;
  1122. #if !OPAQUE_TOOLBOX_STRUCTS
  1123.  
  1124. struct CGrafPort {
  1125.     short                             device;
  1126.     PixMapHandle                     portPixMap;                    /*port's pixel map*/
  1127.     short                             portVersion;                /*high 2 bits always set*/
  1128.     Handle                             grafVars;                    /*Handle to more fields*/
  1129.     short                             chExtra;                    /*character extra*/
  1130.     short                             pnLocHFrac;                    /*pen fraction*/
  1131.     Rect                             portRect;
  1132.     RgnHandle                         visRgn;
  1133.     RgnHandle                         clipRgn;
  1134.     PixPatHandle                     bkPixPat;                    /*background pattern*/
  1135.     RGBColor                         rgbFgColor;                    /*RGB components of fg*/
  1136.     RGBColor                         rgbBkColor;                    /*RGB components of bk*/
  1137.     Point                             pnLoc;
  1138.     Point                             pnSize;
  1139.     short                             pnMode;
  1140.     PixPatHandle                     pnPixPat;                    /*pen's pattern*/
  1141.     PixPatHandle                     fillPixPat;                    /*fill pattern*/
  1142.     short                             pnVis;
  1143.     short                             txFont;
  1144.     StyleField                         txFace;                        /*StyleField occupies 16-bits, but only first 8-bits are used*/
  1145.     UInt8                             txFlags;                    /* QuickTime uses second 8 bits of StyleField for txFlags */
  1146.     short                             txMode;
  1147.     short                             txSize;
  1148.     Fixed                             spExtra;
  1149.     long                             fgColor;
  1150.     long                             bkColor;
  1151.     short                             colrBit;
  1152.     short                             patStretch;
  1153.     Handle                             picSave;
  1154.     Handle                             rgnSave;
  1155.     Handle                             polySave;
  1156.     CQDProcsPtr                     grafProcs;
  1157. };
  1158.  
  1159. #endif  /* !OPAQUE_TOOLBOX_STRUCTS */
  1160.  
  1161. #if OPAQUE_TOOLBOX_STRUCTS
  1162.  
  1163. typedef WindowPtr                         CWindowPtr;
  1164. #else
  1165. typedef CGrafPtr                         CWindowPtr;
  1166. #endif  /* OPAQUE_TOOLBOX_STRUCTS */
  1167.  
  1168.  
  1169. struct ReqListRec {
  1170.     short                             reqLSize;                    /*request list size*/
  1171.     short                             reqLData[1];                /*request list data*/
  1172. };
  1173. typedef struct ReqListRec                ReqListRec;
  1174.  
  1175. struct OpenCPicParams {
  1176.     Rect                             srcRect;
  1177.     Fixed                             hRes;
  1178.     Fixed                             vRes;
  1179.     short                             version;
  1180.     short                             reserved1;
  1181.     long                             reserved2;
  1182. };
  1183. typedef struct OpenCPicParams            OpenCPicParams;
  1184. enum {
  1185.     kCursorImageMajorVersion    = 0x0001,
  1186.     kCursorImageMinorVersion    = 0x0000
  1187. };
  1188.  
  1189.  
  1190. struct CursorImageRec {
  1191.     UInt16                             majorVersion;
  1192.     UInt16                             minorVersion;
  1193.     PixMapHandle                     cursorPixMap;
  1194.     BitMapHandle                     cursorBitMask;
  1195. };
  1196. typedef struct CursorImageRec            CursorImageRec;
  1197.  
  1198. typedef CursorImageRec *                CursorImagePtr;
  1199. typedef CALLBACK_API( void , DeviceLoopDrawingProcPtr )(short depth, short deviceFlags, GDHandle targetDevice, long userData);
  1200. typedef STACK_UPP_TYPE(DeviceLoopDrawingProcPtr)                 DeviceLoopDrawingUPP;
  1201. #if OPAQUE_UPP_TYPES
  1202.     EXTERN_API(QDPrinterStatusUPP)
  1203.     NewQDPrinterStatusUPP           (QDPrinterStatusProcPtr    userRoutine);
  1204.  
  1205.     EXTERN_API(DeviceLoopDrawingUPP)
  1206.     NewDeviceLoopDrawingUPP           (DeviceLoopDrawingProcPtr userRoutine);
  1207.  
  1208.     EXTERN_API(void)
  1209.     DisposeQDPrinterStatusUPP       (QDPrinterStatusUPP        userUPP);
  1210.  
  1211.     EXTERN_API(void)
  1212.     DisposeDeviceLoopDrawingUPP       (DeviceLoopDrawingUPP    userUPP);
  1213.  
  1214.     EXTERN_API(OSStatus)
  1215.     InvokeQDPrinterStatusUPP       (PrinterStatusOpcode        opcode,
  1216.                                     CGrafPtr                currentPort,
  1217.                                     void *                    printerStatus,
  1218.                                     QDPrinterStatusUPP        userUPP);
  1219.  
  1220.     EXTERN_API(void)
  1221.     InvokeDeviceLoopDrawingUPP       (short                    depth,
  1222.                                     short                    deviceFlags,
  1223.                                     GDHandle                targetDevice,
  1224.                                     long                    userData,
  1225.                                     DeviceLoopDrawingUPP    userUPP);
  1226.  
  1227. #else
  1228.     enum { uppQDPrinterStatusProcInfo = 0x00000FF1 };                 /* 4_bytes Func(4_bytes, 4_bytes, 4_bytes) */
  1229.     enum { uppDeviceLoopDrawingProcInfo = 0x00003E80 };             /* pascal no_return_value Func(2_bytes, 2_bytes, 4_bytes, 4_bytes) */
  1230.     #define NewQDPrinterStatusUPP(userRoutine)                         (QDPrinterStatusUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppQDPrinterStatusProcInfo, GetCurrentArchitecture())
  1231.     #define NewDeviceLoopDrawingUPP(userRoutine)                     (DeviceLoopDrawingUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppDeviceLoopDrawingProcInfo, GetCurrentArchitecture())
  1232.     #define DisposeQDPrinterStatusUPP(userUPP)                         DisposeRoutineDescriptor(userUPP)
  1233.     #define DisposeDeviceLoopDrawingUPP(userUPP)                     DisposeRoutineDescriptor(userUPP)
  1234.     #define InvokeQDPrinterStatusUPP(opcode, currentPort, printerStatus, userUPP)  (OSStatus)CALL_THREE_PARAMETER_UPP((userUPP), uppQDPrinterStatusProcInfo, (opcode), (currentPort), (printerStatus))
  1235.     #define InvokeDeviceLoopDrawingUPP(depth, deviceFlags, targetDevice, userData, userUPP)  CALL_FOUR_PARAMETER_UPP((userUPP), uppDeviceLoopDrawingProcInfo, (depth), (deviceFlags), (targetDevice), (userData))
  1236. #endif
  1237. /* support for pre-Carbon UPP routines: NewXXXProc and CallXXXProc */
  1238. #define NewQDPrinterStatusProc(userRoutine)                     NewQDPrinterStatusUPP(userRoutine)
  1239. #define NewDeviceLoopDrawingProc(userRoutine)                     NewDeviceLoopDrawingUPP(userRoutine)
  1240. #define CallQDPrinterStatusProc(userRoutine, opcode, currentPort, printerStatus) InvokeQDPrinterStatusUPP(opcode, currentPort, printerStatus, userRoutine)
  1241. #define CallDeviceLoopDrawingProc(userRoutine, depth, deviceFlags, targetDevice, userData) InvokeDeviceLoopDrawingUPP(depth, deviceFlags, targetDevice, userData, userRoutine)
  1242. #if !OPAQUE_TOOLBOX_STRUCTS
  1243. /* In Carbon, use the QDGlobals accessors such as GetQDGlobalsThePort() */
  1244.  
  1245. struct QDGlobals {
  1246.     char                             privates[76];
  1247.     long                             randSeed;
  1248.     BitMap                             screenBits;
  1249.     Cursor                             arrow;
  1250.     Pattern                         dkGray;
  1251.     Pattern                         ltGray;
  1252.     Pattern                         gray;
  1253.     Pattern                         black;
  1254.     Pattern                         white;
  1255.     GrafPtr                         thePort;
  1256. };
  1257. typedef struct QDGlobals                QDGlobals;
  1258. typedef QDGlobals *                        QDGlobalsPtr;
  1259. typedef QDGlobalsPtr *                    QDGlobalsHdl;
  1260. extern QDGlobals qd;
  1261.  
  1262. #endif  /* !OPAQUE_TOOLBOX_STRUCTS */
  1263.  
  1264. EXTERN_API( void )
  1265. InitGraf                        (void *                    globalPtr)                            ONEWORDINLINE(0xA86E);
  1266.  
  1267. EXTERN_API( void )
  1268. OpenPort                        (GrafPtr                 port)                                ONEWORDINLINE(0xA86F);
  1269.  
  1270. EXTERN_API( void )
  1271. InitPort                        (GrafPtr                 port)                                ONEWORDINLINE(0xA86D);
  1272.  
  1273. EXTERN_API( void )
  1274. ClosePort                        (GrafPtr                 port)                                ONEWORDINLINE(0xA87D);
  1275.  
  1276. /*
  1277.    These are Carbon only routines. They do nothing at all on
  1278.    Mac OS 8, but work flawlessly on Mac OS X.
  1279. */
  1280. EXTERN_API( OSErr )
  1281. LockPortBits                    (GrafPtr                 port);
  1282.  
  1283. EXTERN_API( OSErr )
  1284. UnlockPortBits                    (GrafPtr                 port);
  1285.  
  1286. /* Break a region up into rectangles.*/
  1287.  
  1288. enum {
  1289.     kQDParseRegionFromTop        = (1 << 0),
  1290.     kQDParseRegionFromBottom    = (1 << 1),
  1291.     kQDParseRegionFromLeft        = (1 << 2),
  1292.     kQDParseRegionFromRight        = (1 << 3),
  1293.     kQDParseRegionFromTopLeft    = kQDParseRegionFromTop | kQDParseRegionFromLeft,
  1294.     kQDParseRegionFromBottomRight = kQDParseRegionFromBottom | kQDParseRegionFromRight
  1295. };
  1296.  
  1297.  
  1298. typedef SInt32                             QDRegionParseDirection;
  1299. enum {
  1300.     kQDRegionToRectsMsgInit        = 1,
  1301.     kQDRegionToRectsMsgParse    = 2,
  1302.     kQDRegionToRectsMsgTerminate = 3
  1303. };
  1304.  
  1305. typedef CALLBACK_API_C( OSStatus , RegionToRectsProcPtr )(UInt16 message, RgnHandle rgn, const Rect *rect, void *refCon);
  1306. typedef STACK_UPP_TYPE(RegionToRectsProcPtr)                     RegionToRectsUPP;
  1307. #if OPAQUE_UPP_TYPES
  1308.     EXTERN_API(RegionToRectsUPP)
  1309.     NewRegionToRectsUPP               (RegionToRectsProcPtr    userRoutine);
  1310.  
  1311.     EXTERN_API(void)
  1312.     DisposeRegionToRectsUPP           (RegionToRectsUPP        userUPP);
  1313.  
  1314.     EXTERN_API(OSStatus)
  1315.     InvokeRegionToRectsUPP           (UInt16                    message,
  1316.                                     RgnHandle                rgn,
  1317.                                     const Rect *            rect,
  1318.                                     void *                    refCon,
  1319.                                     RegionToRectsUPP        userUPP);
  1320.  
  1321. #else
  1322.     enum { uppRegionToRectsProcInfo = 0x00003FB1 };                 /* 4_bytes Func(2_bytes, 4_bytes, 4_bytes, 4_bytes) */
  1323.     #define NewRegionToRectsUPP(userRoutine)                         (RegionToRectsUPP)NewRoutineDescriptor((ProcPtr)(userRoutine), uppRegionToRectsProcInfo, GetCurrentArchitecture())
  1324.     #define DisposeRegionToRectsUPP(userUPP)                         DisposeRoutineDescriptor(userUPP)
  1325.     #define InvokeRegionToRectsUPP(message, rgn, rect, refCon, userUPP)  (OSStatus)CALL_FOUR_PARAMETER_UPP((userUPP), uppRegionToRectsProcInfo, (message), (rgn), (rect), (refCon))
  1326. #endif
  1327. /* support for pre-Carbon UPP routines: NewXXXProc and CallXXXProc */
  1328. #define NewRegionToRectsProc(userRoutine)                         NewRegionToRectsUPP(userRoutine)
  1329. #define CallRegionToRectsProc(userRoutine, message, rgn, rect, refCon) InvokeRegionToRectsUPP(message, rgn, rect, refCon, userRoutine)
  1330. EXTERN_API_C( OSStatus )
  1331. QDRegionToRects                    (RgnHandle                 rgn,
  1332.                                  QDRegionParseDirection  dir,
  1333.                                  RegionToRectsUPP         proc,
  1334.                                  void *                    userData);
  1335.  
  1336. #if !TARGET_OS_MAC || TARGET_API_MAC_OSX
  1337. EXTERN_API( OSErr )
  1338. UpdatePort                        (GrafPtr                 port);
  1339.  
  1340. EXTERN_API( void *)
  1341. GetPortNativeWindow                (GrafPtr                 macPort);
  1342.  
  1343. EXTERN_API( GrafPtr )
  1344. GetNativeWindowPort                (void *                    nativeWindow);
  1345.  
  1346. EXTERN_API( void *)
  1347. MacRegionToNativeRegion            (RgnHandle                 macRegion);
  1348.  
  1349. EXTERN_API( RgnHandle )
  1350. NativeRegionToMacRegion            (void *                    nativeRegion);
  1351.  
  1352. #endif  /* !TARGET_OS_MAC || TARGET_API_MAC_OSX */
  1353.  
  1354. #if TARGET_OS_WIN32
  1355. EXTERN_API( void *)
  1356. GetPortHWND                        (GrafPtr                 port);
  1357.  
  1358. EXTERN_API( GrafPtr )
  1359. GetHWNDPort                        (void *                    theHWND);
  1360.  
  1361. #define GetPortHWND(port)  (HWND)GetPortNativeWindow(port)
  1362. #define GetHWNDPort(theHWND) GetNativeWindowPort(theHWND)
  1363. EXTERN_API( void *)
  1364. GetPortHDC                        (GrafPtr                 port);
  1365.  
  1366. EXTERN_API( void *)
  1367. GetPortHBITMAP                    (GrafPtr                 port);
  1368.  
  1369. EXTERN_API( void *)
  1370. GetPortHPALETTE                    (GrafPtr                 port);
  1371.  
  1372. EXTERN_API( void *)
  1373. GetPortHFONT                    (GrafPtr                 port);
  1374.  
  1375. EXTERN_API( void *)
  1376. GetDIBFromPICT                    (PicHandle                 hPict);
  1377.  
  1378. EXTERN_API( PicHandle )
  1379. GetPICTFromDIB                    (void *                    h);
  1380.  
  1381. #endif  /* TARGET_OS_WIN32 */
  1382.  
  1383. #if TARGET_OS_MAC
  1384.     #define MacSetPort SetPort
  1385. #endif
  1386. EXTERN_API( void )
  1387. MacSetPort                        (GrafPtr                 port)                                ONEWORDINLINE(0xA873);
  1388.  
  1389. EXTERN_API( void )
  1390. GetPort                            (GrafPtr *                port)                                ONEWORDINLINE(0xA874);
  1391.  
  1392. EXTERN_API( void )
  1393. GrafDevice                        (short                     device)                                ONEWORDINLINE(0xA872);
  1394.  
  1395. EXTERN_API( void )
  1396. SetPortBits                        (const BitMap *            bm)                                    ONEWORDINLINE(0xA875);
  1397.  
  1398. EXTERN_API( void )
  1399. PortSize                        (short                     width,
  1400.                                  short                     height)                                ONEWORDINLINE(0xA876);
  1401.  
  1402. EXTERN_API( void )
  1403. MovePortTo                        (short                     leftGlobal,
  1404.                                  short                     topGlobal)                            ONEWORDINLINE(0xA877);
  1405.  
  1406. EXTERN_API( void )
  1407. SetOrigin                        (short                     h,
  1408.                                  short                     v)                                    ONEWORDINLINE(0xA878);
  1409.  
  1410. EXTERN_API( void )
  1411. SetClip                            (RgnHandle                 rgn)                                ONEWORDINLINE(0xA879);
  1412.  
  1413. EXTERN_API( void )
  1414. GetClip                            (RgnHandle                 rgn)                                ONEWORDINLINE(0xA87A);
  1415.  
  1416. EXTERN_API( void )
  1417. ClipRect                        (const Rect *            r)                                    ONEWORDINLINE(0xA87B);
  1418.  
  1419. EXTERN_API( void )
  1420. BackPat                            (const Pattern *        pat)                                ONEWORDINLINE(0xA87C);
  1421.  
  1422. EXTERN_API( void )
  1423. InitCursor                        (void)                                                        ONEWORDINLINE(0xA850);
  1424.  
  1425. #if TARGET_OS_MAC
  1426.     #define MacSetCursor SetCursor
  1427. #endif
  1428. EXTERN_API( void )
  1429. MacSetCursor                    (const Cursor *            crsr)                                ONEWORDINLINE(0xA851);
  1430.  
  1431. EXTERN_API( void )
  1432. HideCursor                        (void)                                                        ONEWORDINLINE(0xA852);
  1433.  
  1434. #if TARGET_OS_MAC
  1435.     #define MacShowCursor ShowCursor
  1436. #endif
  1437. EXTERN_API( void )
  1438. MacShowCursor                    (void)                                                        ONEWORDINLINE(0xA853);
  1439.  
  1440. EXTERN_API( void )
  1441. ObscureCursor                    (void)                                                        ONEWORDINLINE(0xA856);
  1442.  
  1443. EXTERN_API( void )
  1444. HidePen                            (void)                                                        ONEWORDINLINE(0xA896);
  1445.  
  1446. EXTERN_API( void )
  1447. ShowPen                            (void)                                                        ONEWORDINLINE(0xA897);
  1448.  
  1449. EXTERN_API( void )
  1450. GetPen                            (Point *                pt)                                    ONEWORDINLINE(0xA89A);
  1451.  
  1452. EXTERN_API( void )
  1453. GetPenState                        (PenState *                pnState)                            ONEWORDINLINE(0xA898);
  1454.  
  1455. EXTERN_API( void )
  1456. SetPenState                        (const PenState *        pnState)                            ONEWORDINLINE(0xA899);
  1457.  
  1458. EXTERN_API( void )
  1459. PenSize                            (short                     width,
  1460.                                  short                     height)                                ONEWORDINLINE(0xA89B);
  1461.  
  1462. EXTERN_API( void )
  1463. PenMode                            (short                     mode)                                ONEWORDINLINE(0xA89C);
  1464.  
  1465. EXTERN_API( void )
  1466. PenPat                            (const Pattern *        pat)                                ONEWORDINLINE(0xA89D);
  1467.  
  1468. EXTERN_API( void )
  1469. PenNormal                        (void)                                                        ONEWORDINLINE(0xA89E);
  1470.  
  1471. EXTERN_API( void )
  1472. MoveTo                            (short                     h,
  1473.                                  short                     v)                                    ONEWORDINLINE(0xA893);
  1474.  
  1475. EXTERN_API( void )
  1476. Move                            (short                     dh,
  1477.                                  short                     dv)                                    ONEWORDINLINE(0xA894);
  1478.  
  1479. #if TARGET_OS_MAC
  1480.     #define MacLineTo LineTo
  1481. #endif
  1482. EXTERN_API( void )
  1483. MacLineTo                        (short                     h,
  1484.                                  short                     v)                                    ONEWORDINLINE(0xA891);
  1485.  
  1486. EXTERN_API( void )
  1487. Line                            (short                     dh,
  1488.                                  short                     dv)                                    ONEWORDINLINE(0xA892);
  1489.  
  1490. EXTERN_API( void )
  1491. ForeColor                        (long                     color)                                ONEWORDINLINE(0xA862);
  1492.  
  1493. EXTERN_API( void )
  1494. BackColor                        (long                     color)                                ONEWORDINLINE(0xA863);
  1495.  
  1496. EXTERN_API( void )
  1497. ColorBit                        (short                     whichBit)                            ONEWORDINLINE(0xA864);
  1498.  
  1499. #if TARGET_OS_MAC
  1500.     #define MacSetRect SetRect
  1501. #endif
  1502. EXTERN_API( void )
  1503. MacSetRect                        (Rect *                    r,
  1504.                                  short                     left,
  1505.                                  short                     top,
  1506.                                  short                     right,
  1507.                                  short                     bottom)                                ONEWORDINLINE(0xA8A7);
  1508.  
  1509. #if TARGET_OS_MAC
  1510.     #define MacOffsetRect OffsetRect
  1511. #endif
  1512. EXTERN_API( void )
  1513. MacOffsetRect                    (Rect *                    r,
  1514.                                  short                     dh,
  1515.                                  short                     dv)                                    ONEWORDINLINE(0xA8A8);
  1516.  
  1517. #if TARGET_OS_MAC
  1518.     #define MacInsetRect InsetRect
  1519. #endif
  1520. EXTERN_API( void )
  1521. MacInsetRect                    (Rect *                    r,
  1522.                                  short                     dh,
  1523.                                  short                     dv)                                    ONEWORDINLINE(0xA8A9);
  1524.  
  1525. EXTERN_API( Boolean )
  1526. SectRect                        (const Rect *            src1,
  1527.                                  const Rect *            src2,
  1528.                                  Rect *                    dstRect)                            ONEWORDINLINE(0xA8AA);
  1529.  
  1530. #if TARGET_OS_MAC
  1531.     #define MacUnionRect UnionRect
  1532. #endif
  1533. EXTERN_API( void )
  1534. MacUnionRect                    (const Rect *            src1,
  1535.                                  const Rect *            src2,
  1536.                                  Rect *                    dstRect)                            ONEWORDINLINE(0xA8AB);
  1537.  
  1538. #if TARGET_OS_MAC
  1539.     #define MacEqualRect EqualRect
  1540. #endif
  1541. EXTERN_API( Boolean )
  1542. MacEqualRect                    (const Rect *            rect1,
  1543.                                  const Rect *            rect2)                                ONEWORDINLINE(0xA8A6);
  1544.  
  1545. EXTERN_API( Boolean )
  1546. EmptyRect                        (const Rect *            r)                                    ONEWORDINLINE(0xA8AE);
  1547.  
  1548. #if TARGET_OS_MAC
  1549.     #define MacFrameRect FrameRect
  1550. #endif
  1551. EXTERN_API( void )
  1552. MacFrameRect                    (const Rect *            r)                                    ONEWORDINLINE(0xA8A1);
  1553.  
  1554. EXTERN_API( void )
  1555. PaintRect                        (const Rect *            r)                                    ONEWORDINLINE(0xA8A2);
  1556.  
  1557. EXTERN_API( void )
  1558. EraseRect                        (const Rect *            r)                                    ONEWORDINLINE(0xA8A3);
  1559.  
  1560. #if TARGET_OS_MAC
  1561.     #define MacInvertRect InvertRect
  1562. #endif
  1563. EXTERN_API( void )
  1564. MacInvertRect                    (const Rect *            r)                                    ONEWORDINLINE(0xA8A4);
  1565.  
  1566. #if TARGET_OS_MAC
  1567.     #define MacFillRect FillRect
  1568. #endif
  1569. EXTERN_API( void )
  1570. MacFillRect                        (const Rect *            r,
  1571.                                  const Pattern *        pat)                                ONEWORDINLINE(0xA8A5);
  1572.  
  1573. EXTERN_API( void )
  1574. FrameOval                        (const Rect *            r)                                    ONEWORDINLINE(0xA8B7);
  1575.  
  1576. EXTERN_API( void )
  1577. PaintOval                        (const Rect *            r)                                    ONEWORDINLINE(0xA8B8);
  1578.  
  1579. EXTERN_API( void )
  1580. EraseOval                        (const Rect *            r)                                    ONEWORDINLINE(0xA8B9);
  1581.  
  1582. EXTERN_API( void )
  1583. InvertOval                        (const Rect *            r)                                    ONEWORDINLINE(0xA8BA);
  1584.  
  1585. EXTERN_API( void )
  1586. FillOval                        (const Rect *            r,
  1587.                                  const Pattern *        pat)                                ONEWORDINLINE(0xA8BB);
  1588.  
  1589. EXTERN_API( void )
  1590. FrameRoundRect                    (const Rect *            r,
  1591.                                  short                     ovalWidth,
  1592.                                  short                     ovalHeight)                            ONEWORDINLINE(0xA8B0);
  1593.  
  1594. EXTERN_API( void )
  1595. PaintRoundRect                    (const Rect *            r,
  1596.                                  short                     ovalWidth,
  1597.                                  short                     ovalHeight)                            ONEWORDINLINE(0xA8B1);
  1598.  
  1599. EXTERN_API( void )
  1600. EraseRoundRect                    (const Rect *            r,
  1601.                                  short                     ovalWidth,
  1602.                                  short                     ovalHeight)                            ONEWORDINLINE(0xA8B2);
  1603.  
  1604. EXTERN_API( void )
  1605. InvertRoundRect                    (const Rect *            r,
  1606.                                  short                     ovalWidth,
  1607.                                  short                     ovalHeight)                            ONEWORDINLINE(0xA8B3);
  1608.  
  1609. EXTERN_API( void )
  1610. FillRoundRect                    (const Rect *            r,
  1611.                                  short                     ovalWidth,
  1612.                                  short                     ovalHeight,
  1613.                                  const Pattern *        pat)                                ONEWORDINLINE(0xA8B4);
  1614.  
  1615. EXTERN_API( void )
  1616. FrameArc                        (const Rect *            r,
  1617.                                  short                     startAngle,
  1618.                                  short                     arcAngle)                            ONEWORDINLINE(0xA8BE);
  1619.  
  1620. EXTERN_API( void )
  1621. PaintArc                        (const Rect *            r,
  1622.                                  short                     startAngle,
  1623.                                  short                     arcAngle)                            ONEWORDINLINE(0xA8BF);
  1624.  
  1625. EXTERN_API( void )
  1626. EraseArc                        (const Rect *            r,
  1627.                                  short                     startAngle,
  1628.                                  short                     arcAngle)                            ONEWORDINLINE(0xA8C0);
  1629.  
  1630. EXTERN_API( void )
  1631. InvertArc                        (const Rect *            r,
  1632.                                  short                     startAngle,
  1633.                                  short                     arcAngle)                            ONEWORDINLINE(0xA8C1);
  1634.  
  1635. EXTERN_API( void )
  1636. FillArc                            (const Rect *            r,
  1637.                                  short                     startAngle,
  1638.                                  short                     arcAngle,
  1639.                                  const Pattern *        pat)                                ONEWORDINLINE(0xA8C2);
  1640.  
  1641. EXTERN_API( RgnHandle )
  1642. NewRgn                            (void)                                                        ONEWORDINLINE(0xA8D8);
  1643.  
  1644. EXTERN_API( void )
  1645. OpenRgn                            (void)                                                        ONEWORDINLINE(0xA8DA);
  1646.  
  1647. EXTERN_API( void )
  1648. CloseRgn                        (RgnHandle                 dstRgn)                                ONEWORDINLINE(0xA8DB);
  1649.  
  1650. EXTERN_API( OSErr )
  1651. BitMapToRegion                    (RgnHandle                 region,
  1652.                                  const BitMap *            bMap)                                ONEWORDINLINE(0xA8D7);
  1653.  
  1654. EXTERN_API( void )
  1655. DisposeRgn                        (RgnHandle                 rgn)                                ONEWORDINLINE(0xA8D9);
  1656.  
  1657. #if TARGET_OS_MAC
  1658.     #define MacCopyRgn CopyRgn
  1659. #endif
  1660. EXTERN_API( void )
  1661. MacCopyRgn                        (RgnHandle                 srcRgn,
  1662.                                  RgnHandle                 dstRgn)                                ONEWORDINLINE(0xA8DC);
  1663.  
  1664. EXTERN_API( void )
  1665. SetEmptyRgn                        (RgnHandle                 rgn)                                ONEWORDINLINE(0xA8DD);
  1666.  
  1667. #if TARGET_OS_MAC
  1668.     #define MacSetRectRgn SetRectRgn
  1669. #endif
  1670. EXTERN_API( void )
  1671. MacSetRectRgn                    (RgnHandle                 rgn,
  1672.                                  short                     left,
  1673.                                  short                     top,
  1674.                                  short                     right,
  1675.                                  short                     bottom)                                ONEWORDINLINE(0xA8DE);
  1676.  
  1677. EXTERN_API( void )
  1678. RectRgn                            (RgnHandle                 rgn,
  1679.                                  const Rect *            r)                                    ONEWORDINLINE(0xA8DF);
  1680.  
  1681. #if TARGET_OS_MAC
  1682.     #define MacOffsetRgn OffsetRgn
  1683. #endif
  1684. EXTERN_API( void )
  1685. MacOffsetRgn                    (RgnHandle                 rgn,
  1686.                                  short                     dh,
  1687.                                  short                     dv)                                    ONEWORDINLINE(0xA8E0);
  1688.  
  1689. EXTERN_API( void )
  1690. InsetRgn                        (RgnHandle                 rgn,
  1691.                                  short                     dh,
  1692.                                  short                     dv)                                    ONEWORDINLINE(0xA8E1);
  1693.  
  1694. EXTERN_API( void )
  1695. SectRgn                            (RgnHandle                 srcRgnA,
  1696.                                  RgnHandle                 srcRgnB,
  1697.                                  RgnHandle                 dstRgn)                                ONEWORDINLINE(0xA8E4);
  1698.  
  1699. #if TARGET_OS_MAC
  1700.     #define MacUnionRgn UnionRgn
  1701. #endif
  1702. EXTERN_API( void )
  1703. MacUnionRgn                        (RgnHandle                 srcRgnA,
  1704.                                  RgnHandle                 srcRgnB,
  1705.                                  RgnHandle                 dstRgn)                                ONEWORDINLINE(0xA8E5);
  1706.  
  1707. EXTERN_API( void )
  1708. DiffRgn                            (RgnHandle                 srcRgnA,
  1709.                                  RgnHandle                 srcRgnB,
  1710.                                  RgnHandle                 dstRgn)                                ONEWORDINLINE(0xA8E6);
  1711.  
  1712. #if TARGET_OS_MAC
  1713.     #define MacXorRgn XorRgn
  1714. #endif
  1715. EXTERN_API( void )
  1716. MacXorRgn                        (RgnHandle                 srcRgnA,
  1717.                                  RgnHandle                 srcRgnB,
  1718.                                  RgnHandle                 dstRgn)                                ONEWORDINLINE(0xA8E7);
  1719.  
  1720. EXTERN_API( Boolean )
  1721. RectInRgn                        (const Rect *            r,
  1722.                                  RgnHandle                 rgn)                                ONEWORDINLINE(0xA8E9);
  1723.  
  1724. #if TARGET_OS_MAC
  1725.     #define MacEqualRgn EqualRgn
  1726. #endif
  1727. EXTERN_API( Boolean )
  1728. MacEqualRgn                        (RgnHandle                 rgnA,
  1729.                                  RgnHandle                 rgnB)                                ONEWORDINLINE(0xA8E3);
  1730.  
  1731. EXTERN_API( Boolean )
  1732. EmptyRgn                        (RgnHandle                 rgn)                                ONEWORDINLINE(0xA8E2);
  1733.  
  1734. #if TARGET_OS_MAC
  1735.     #define MacFrameRgn FrameRgn
  1736. #endif
  1737. EXTERN_API( void )
  1738. MacFrameRgn                        (RgnHandle                 rgn)                                ONEWORDINLINE(0xA8D2);
  1739.  
  1740. #if TARGET_OS_MAC
  1741.     #define MacPaintRgn PaintRgn
  1742. #endif
  1743. EXTERN_API( void )
  1744. MacPaintRgn                        (RgnHandle                 rgn)                                ONEWORDINLINE(0xA8D3);
  1745.  
  1746. EXTERN_API( void )
  1747. EraseRgn                        (RgnHandle                 rgn)                                ONEWORDINLINE(0xA8D4);
  1748.  
  1749. #if TARGET_OS_MAC
  1750.     #define MacInvertRgn InvertRgn
  1751. #endif
  1752. EXTERN_API( void )
  1753. MacInvertRgn                    (RgnHandle                 rgn)                                ONEWORDINLINE(0xA8D5);
  1754.  
  1755. #if TARGET_OS_MAC
  1756.     #define MacFillRgn FillRgn
  1757. #endif
  1758. EXTERN_API( void )
  1759. MacFillRgn                        (RgnHandle                 rgn,
  1760.                                  const Pattern *        pat)                                ONEWORDINLINE(0xA8D6);
  1761.  
  1762. EXTERN_API( void )
  1763. ScrollRect                        (const Rect *            r,
  1764.                                  short                     dh,
  1765.                                  short                     dv,
  1766.                                  RgnHandle                 updateRgn)                            ONEWORDINLINE(0xA8EF);
  1767.  
  1768. EXTERN_API( void )
  1769. CopyBits                        (const BitMap *            srcBits,
  1770.                                  const BitMap *            dstBits,
  1771.                                  const Rect *            srcRect,
  1772.                                  const Rect *            dstRect,
  1773.                                  short                     mode,
  1774.                                  RgnHandle                 maskRgn) /* can be NULL */            ONEWORDINLINE(0xA8EC);
  1775.  
  1776. EXTERN_API( void )
  1777. SeedFill                        (const void *            srcPtr,
  1778.                                  void *                    dstPtr,
  1779.                                  short                     srcRow,
  1780.                                  short                     dstRow,
  1781.                                  short                     height,
  1782.                                  short                     words,
  1783.                                  short                     seedH,
  1784.                                  short                     seedV)                                ONEWORDINLINE(0xA839);
  1785.  
  1786. EXTERN_API( void )
  1787. CalcMask                        (const void *            srcPtr,
  1788.                                  void *                    dstPtr,
  1789.                                  short                     srcRow,
  1790.                                  short                     dstRow,
  1791.                                  short                     height,
  1792.                                  short                     words)                                ONEWORDINLINE(0xA838);
  1793.  
  1794. EXTERN_API( void )
  1795. CopyMask                        (const BitMap *            srcBits,
  1796.                                  const BitMap *            maskBits,
  1797.                                  const BitMap *            dstBits,
  1798.                                  const Rect *            srcRect,
  1799.                                  const Rect *            maskRect,
  1800.                                  const Rect *            dstRect)                            ONEWORDINLINE(0xA817);
  1801.  
  1802. EXTERN_API( PicHandle )
  1803. OpenPicture                        (const Rect *            picFrame)                            ONEWORDINLINE(0xA8F3);
  1804.  
  1805. EXTERN_API( void )
  1806. PicComment                        (short                     kind,
  1807.                                  short                     dataSize,
  1808.                                  Handle                 dataHandle)                            ONEWORDINLINE(0xA8F2);
  1809.  
  1810. EXTERN_API( void )
  1811. ClosePicture                    (void)                                                        ONEWORDINLINE(0xA8F4);
  1812.  
  1813. EXTERN_API( void )
  1814. DrawPicture                        (PicHandle                 myPicture,
  1815.                                  const Rect *            dstRect)                            ONEWORDINLINE(0xA8F6);
  1816.  
  1817. EXTERN_API( void )
  1818. KillPicture                        (PicHandle                 myPicture)                            ONEWORDINLINE(0xA8F5);
  1819.  
  1820. EXTERN_API( PolyHandle )
  1821. OpenPoly                        (void)                                                        ONEWORDINLINE(0xA8CB);
  1822.  
  1823. EXTERN_API( void )
  1824. ClosePoly                        (void)                                                        ONEWORDINLINE(0xA8CC);
  1825.  
  1826. EXTERN_API( void )
  1827. KillPoly                        (PolyHandle             poly)                                ONEWORDINLINE(0xA8CD);
  1828.  
  1829. EXTERN_API( void )
  1830. OffsetPoly                        (PolyHandle             poly,
  1831.                                  short                     dh,
  1832.                                  short                     dv)                                    ONEWORDINLINE(0xA8CE);
  1833.  
  1834. EXTERN_API( void )
  1835. FramePoly                        (PolyHandle             poly)                                ONEWORDINLINE(0xA8C6);
  1836.  
  1837. EXTERN_API( void )
  1838. PaintPoly                        (PolyHandle             poly)                                ONEWORDINLINE(0xA8C7);
  1839.  
  1840. EXTERN_API( void )
  1841. ErasePoly                        (PolyHandle             poly)                                ONEWORDINLINE(0xA8C8);
  1842.  
  1843. EXTERN_API( void )
  1844. InvertPoly                        (PolyHandle             poly)                                ONEWORDINLINE(0xA8C9);
  1845.  
  1846. EXTERN_API( void )
  1847. FillPoly                        (PolyHandle             poly,
  1848.                                  const Pattern *        pat)                                ONEWORDINLINE(0xA8CA);
  1849.  
  1850. EXTERN_API( void )
  1851. SetPt                            (Point *                pt,
  1852.                                  short                     h,
  1853.                                  short                     v)                                    ONEWORDINLINE(0xA880);
  1854.  
  1855. EXTERN_API( void )
  1856. LocalToGlobal                    (Point *                pt)                                    ONEWORDINLINE(0xA870);
  1857.  
  1858. EXTERN_API( void )
  1859. GlobalToLocal                    (Point *                pt)                                    ONEWORDINLINE(0xA871);
  1860.  
  1861. EXTERN_API( short )
  1862. Random                            (void)                                                        ONEWORDINLINE(0xA861);
  1863.  
  1864. EXTERN_API( void )
  1865. StuffHex                        (void *                    thingPtr,
  1866.                                  ConstStr255Param         s)                                    ONEWORDINLINE(0xA866);
  1867.  
  1868. #if TARGET_OS_MAC
  1869.     #define MacGetPixel GetPixel
  1870. #endif
  1871. EXTERN_API( Boolean )
  1872. MacGetPixel                        (short                     h,
  1873.                                  short                     v)                                    ONEWORDINLINE(0xA865);
  1874.  
  1875. EXTERN_API( void )
  1876. ScalePt                            (Point *                pt,
  1877.                                  const Rect *            srcRect,
  1878.                                  const Rect *            dstRect)                            ONEWORDINLINE(0xA8F8);
  1879.  
  1880. EXTERN_API( void )
  1881. MapPt                            (Point *                pt,
  1882.                                  const Rect *            srcRect,
  1883.                                  const Rect *            dstRect)                            ONEWORDINLINE(0xA8F9);
  1884.  
  1885. EXTERN_API( void )
  1886. MapRect                            (Rect *                    r,
  1887.                                  const Rect *            srcRect,
  1888.                                  const Rect *            dstRect)                            ONEWORDINLINE(0xA8FA);
  1889.  
  1890. EXTERN_API( void )
  1891. MapRgn                            (RgnHandle                 rgn,
  1892.                                  const Rect *            srcRect,
  1893.                                  const Rect *            dstRect)                            ONEWORDINLINE(0xA8FB);
  1894.  
  1895. EXTERN_API( void )
  1896. MapPoly                            (PolyHandle             poly,
  1897.                                  const Rect *            srcRect,
  1898.                                  const Rect *            dstRect)                            ONEWORDINLINE(0xA8FC);
  1899.  
  1900. EXTERN_API( void )
  1901. SetStdProcs                        (QDProcs *                procs)                                ONEWORDINLINE(0xA8EA);
  1902.  
  1903. EXTERN_API( void )
  1904. StdRect                            (GrafVerb                 verb,
  1905.                                  const Rect *            r)                                    ONEWORDINLINE(0xA8A0);
  1906.  
  1907. EXTERN_API( void )
  1908. StdRRect                        (GrafVerb                 verb,
  1909.                                  const Rect *            r,
  1910.                                  short                     ovalWidth,
  1911.                                  short                     ovalHeight)                            ONEWORDINLINE(0xA8AF);
  1912.  
  1913. EXTERN_API( void )
  1914. StdOval                            (GrafVerb                 verb,
  1915.                                  const Rect *            r)                                    ONEWORDINLINE(0xA8B6);
  1916.  
  1917. EXTERN_API( void )
  1918. StdArc                            (GrafVerb                 verb,
  1919.                                  const Rect *            r,
  1920.                                  short                     startAngle,
  1921.                                  short                     arcAngle)                            ONEWORDINLINE(0xA8BD);
  1922.  
  1923. EXTERN_API( void )
  1924. StdPoly                            (GrafVerb                 verb,
  1925.                                  PolyHandle             poly)                                ONEWORDINLINE(0xA8C5);
  1926.  
  1927. EXTERN_API( void )
  1928. StdRgn                            (GrafVerb                 verb,
  1929.                                  RgnHandle                 rgn)                                ONEWORDINLINE(0xA8D1);
  1930.  
  1931. EXTERN_API( void )
  1932. StdBits                            (const BitMap *            srcBits,
  1933.                                  const Rect *            srcRect,
  1934.                                  const Rect *            dstRect,
  1935.                                  short                     mode,
  1936.                                  RgnHandle                 maskRgn)                            ONEWORDINLINE(0xA8EB);
  1937.  
  1938. EXTERN_API( void )
  1939. StdComment                        (short                     kind,
  1940.                                  short                     dataSize,
  1941.                                  Handle                 dataHandle)                            ONEWORDINLINE(0xA8F1);
  1942.  
  1943. EXTERN_API( void )
  1944. StdGetPic                        (void *                    dataPtr,
  1945.                                  short                     byteCount)                            ONEWORDINLINE(0xA8EE);
  1946.  
  1947. EXTERN_API( void )
  1948. StdPutPic                        (const void *            dataPtr,
  1949.                                  short                     byteCount)                            ONEWORDINLINE(0xA8F0);
  1950.  
  1951. EXTERN_API( void )
  1952. StdOpcode                        (const Rect *            fromRect,
  1953.                                  const Rect *            toRect,
  1954.                                  UInt16                 opcode,
  1955.                                  SInt16                 version)                            ONEWORDINLINE(0xABF8);
  1956.  
  1957. EXTERN_API( void )
  1958. AddPt                            (Point                     src,
  1959.                                  Point *                dst)                                ONEWORDINLINE(0xA87E);
  1960.  
  1961. EXTERN_API( Boolean )
  1962. EqualPt                            (Point                     pt1,
  1963.                                  Point                     pt2)                                ONEWORDINLINE(0xA881);
  1964.  
  1965. #if TARGET_OS_MAC
  1966.     #define MacPtInRect PtInRect
  1967. #endif
  1968. EXTERN_API( Boolean )
  1969. MacPtInRect                        (Point                     pt,
  1970.                                  const Rect *            r)                                    ONEWORDINLINE(0xA8AD);
  1971.  
  1972. EXTERN_API( void )
  1973. Pt2Rect                            (Point                     pt1,
  1974.                                  Point                     pt2,
  1975.                                  Rect *                    dstRect)                            ONEWORDINLINE(0xA8AC);
  1976.  
  1977. EXTERN_API( void )
  1978. PtToAngle                        (const Rect *            r,
  1979.                                  Point                     pt,
  1980.                                  short *                angle)                                ONEWORDINLINE(0xA8C3);
  1981.  
  1982. EXTERN_API( void )
  1983. SubPt                            (Point                     src,
  1984.                                  Point *                dst)                                ONEWORDINLINE(0xA87F);
  1985.  
  1986. EXTERN_API( Boolean )
  1987. PtInRgn                            (Point                     pt,
  1988.                                  RgnHandle                 rgn)                                ONEWORDINLINE(0xA8E8);
  1989.  
  1990. EXTERN_API( void )
  1991. StdLine                            (Point                     newPt)                                ONEWORDINLINE(0xA890);
  1992.  
  1993. EXTERN_API( void )
  1994. OpenCPort                        (CGrafPtr                 port)                                ONEWORDINLINE(0xAA00);
  1995.  
  1996. EXTERN_API( void )
  1997. InitCPort                        (CGrafPtr                 port)                                ONEWORDINLINE(0xAA01);
  1998.  
  1999. EXTERN_API( void )
  2000. CloseCPort                        (CGrafPtr                 port)                                ONEWORDINLINE(0xAA02);
  2001.  
  2002. EXTERN_API( PixMapHandle )
  2003. NewPixMap                        (void)                                                        ONEWORDINLINE(0xAA03);
  2004.  
  2005. EXTERN_API( void )
  2006. DisposePixMap                    (PixMapHandle             pm)                                    ONEWORDINLINE(0xAA04);
  2007.  
  2008. EXTERN_API( void )
  2009. CopyPixMap                        (PixMapHandle             srcPM,
  2010.                                  PixMapHandle             dstPM)                                ONEWORDINLINE(0xAA05);
  2011.  
  2012. EXTERN_API( PixPatHandle )
  2013. NewPixPat                        (void)                                                        ONEWORDINLINE(0xAA07);
  2014.  
  2015. EXTERN_API( void )
  2016. DisposePixPat                    (PixPatHandle             pp)                                    ONEWORDINLINE(0xAA08);
  2017.  
  2018. EXTERN_API( void )
  2019. CopyPixPat                        (PixPatHandle             srcPP,
  2020.                                  PixPatHandle             dstPP)                                ONEWORDINLINE(0xAA09);
  2021.  
  2022. EXTERN_API( void )
  2023. PenPixPat                        (PixPatHandle             pp)                                    ONEWORDINLINE(0xAA0A);
  2024.  
  2025. EXTERN_API( void )
  2026. BackPixPat                        (PixPatHandle             pp)                                    ONEWORDINLINE(0xAA0B);
  2027.  
  2028. EXTERN_API( PixPatHandle )
  2029. GetPixPat                        (short                     patID)                                ONEWORDINLINE(0xAA0C);
  2030.  
  2031. EXTERN_API( void )
  2032. MakeRGBPat                        (PixPatHandle             pp,
  2033.                                  const RGBColor *        myColor)                            ONEWORDINLINE(0xAA0D);
  2034.  
  2035. EXTERN_API( void )
  2036. FillCRect                        (const Rect *            r,
  2037.                                  PixPatHandle             pp)                                    ONEWORDINLINE(0xAA0E);
  2038.  
  2039. EXTERN_API( void )
  2040. FillCOval                        (const Rect *            r,
  2041.                                  PixPatHandle             pp)                                    ONEWORDINLINE(0xAA0F);
  2042.  
  2043. EXTERN_API( void )
  2044. FillCRoundRect                    (const Rect *            r,
  2045.                                  short                     ovalWidth,
  2046.                                  short                     ovalHeight,
  2047.                                  PixPatHandle             pp)                                    ONEWORDINLINE(0xAA10);
  2048.  
  2049. EXTERN_API( void )
  2050. FillCArc                        (const Rect *            r,
  2051.                                  short                     startAngle,
  2052.                                  short                     arcAngle,
  2053.                                  PixPatHandle             pp)                                    ONEWORDINLINE(0xAA11);
  2054.  
  2055. EXTERN_API( void )
  2056. FillCRgn                        (RgnHandle                 rgn,
  2057.                                  PixPatHandle             pp)                                    ONEWORDINLINE(0xAA12);
  2058.  
  2059. EXTERN_API( void )
  2060. FillCPoly                        (PolyHandle             poly,
  2061.                                  PixPatHandle             pp)                                    ONEWORDINLINE(0xAA13);
  2062.  
  2063. EXTERN_API( void )
  2064. RGBForeColor                    (const RGBColor *        color)                                ONEWORDINLINE(0xAA14);
  2065.  
  2066. EXTERN_API( void )
  2067. RGBBackColor                    (const RGBColor *        color)                                ONEWORDINLINE(0xAA15);
  2068.  
  2069. EXTERN_API( void )
  2070. SetCPixel                        (short                     h,
  2071.                                  short                     v,
  2072.                                  const RGBColor *        cPix)                                ONEWORDINLINE(0xAA16);
  2073.  
  2074. EXTERN_API( void )
  2075. SetPortPix                        (PixMapHandle             pm)                                    ONEWORDINLINE(0xAA06);
  2076.  
  2077. EXTERN_API( void )
  2078. GetCPixel                        (short                     h,
  2079.                                  short                     v,
  2080.                                  RGBColor *                cPix)                                ONEWORDINLINE(0xAA17);
  2081.  
  2082. EXTERN_API( void )
  2083. GetForeColor                    (RGBColor *                color)                                ONEWORDINLINE(0xAA19);
  2084.  
  2085. EXTERN_API( void )
  2086. GetBackColor                    (RGBColor *                color)                                ONEWORDINLINE(0xAA1A);
  2087.  
  2088. EXTERN_API( void )
  2089. SeedCFill                        (const BitMap *            srcBits,
  2090.                                  const BitMap *            dstBits,
  2091.                                  const Rect *            srcRect,
  2092.                                  const Rect *            dstRect,
  2093.                                  short                     seedH,
  2094.                                  short                     seedV,
  2095.                                  ColorSearchUPP         matchProc,
  2096.                                  long                     matchData)                            ONEWORDINLINE(0xAA50);
  2097.  
  2098. EXTERN_API( void )
  2099. CalcCMask                        (const BitMap *            srcBits,
  2100.                                  const BitMap *            dstBits,
  2101.                                  const Rect *            srcRect,
  2102.                                  const Rect *            dstRect,
  2103.                                  const RGBColor *        seedRGB,
  2104.                                  ColorSearchUPP         matchProc,
  2105.                                  long                     matchData)                            ONEWORDINLINE(0xAA4F);
  2106.  
  2107. EXTERN_API( PicHandle )
  2108. OpenCPicture                    (const OpenCPicParams *    newHeader)                            ONEWORDINLINE(0xAA20);
  2109.  
  2110. EXTERN_API( void )
  2111. OpColor                            (const RGBColor *        color)                                ONEWORDINLINE(0xAA21);
  2112.  
  2113. EXTERN_API( void )
  2114. HiliteColor                        (const RGBColor *        color)                                ONEWORDINLINE(0xAA22);
  2115.  
  2116. EXTERN_API( void )
  2117. DisposeCTable                    (CTabHandle             cTable)                                ONEWORDINLINE(0xAA24);
  2118.  
  2119. EXTERN_API( CTabHandle )
  2120. GetCTable                        (short                     ctID)                                ONEWORDINLINE(0xAA18);
  2121.  
  2122. EXTERN_API( CCrsrHandle )
  2123. GetCCursor                        (short                     crsrID)                                ONEWORDINLINE(0xAA1B);
  2124.  
  2125. EXTERN_API( void )
  2126. SetCCursor                        (CCrsrHandle             cCrsr)                                ONEWORDINLINE(0xAA1C);
  2127.  
  2128. EXTERN_API( void )
  2129. AllocCursor                        (void)                                                        ONEWORDINLINE(0xAA1D);
  2130.  
  2131. EXTERN_API( void )
  2132. DisposeCCursor                    (CCrsrHandle             cCrsr)                                ONEWORDINLINE(0xAA26);
  2133.  
  2134. /* GetCIcon(), PlotCIcon(), and DisposeCIcon() moved to Icons.h*/
  2135.  
  2136. EXTERN_API( void )
  2137. SetStdCProcs                    (CQDProcs *                procs)                                ONEWORDINLINE(0xAA4E);
  2138.  
  2139. EXTERN_API( GDHandle )
  2140. GetMaxDevice                    (const Rect *            globalRect)                            ONEWORDINLINE(0xAA27);
  2141.  
  2142. EXTERN_API( long )
  2143. GetCTSeed                        (void)                                                        ONEWORDINLINE(0xAA28);
  2144.  
  2145. EXTERN_API( GDHandle )
  2146. GetDeviceList                    (void)                                                        ONEWORDINLINE(0xAA29);
  2147.  
  2148. EXTERN_API( GDHandle )
  2149. GetMainDevice                    (void)                                                        ONEWORDINLINE(0xAA2A);
  2150.  
  2151. EXTERN_API( GDHandle )
  2152. GetNextDevice                    (GDHandle                 curDevice)                            ONEWORDINLINE(0xAA2B);
  2153.  
  2154. EXTERN_API( Boolean )
  2155. TestDeviceAttribute                (GDHandle                 gdh,
  2156.                                  short                     attribute)                            ONEWORDINLINE(0xAA2C);
  2157.  
  2158. EXTERN_API( void )
  2159. SetDeviceAttribute                (GDHandle                 gdh,
  2160.                                  short                     attribute,
  2161.                                  Boolean                 value)                                ONEWORDINLINE(0xAA2D);
  2162.  
  2163. EXTERN_API( void )
  2164. InitGDevice                        (short                     qdRefNum,
  2165.                                  long                     mode,
  2166.                                  GDHandle                 gdh)                                ONEWORDINLINE(0xAA2E);
  2167.  
  2168. EXTERN_API( GDHandle )
  2169. NewGDevice                        (short                     refNum,
  2170.                                  long                     mode)                                ONEWORDINLINE(0xAA2F);
  2171.  
  2172. EXTERN_API( void )
  2173. DisposeGDevice                    (GDHandle                 gdh)                                ONEWORDINLINE(0xAA30);
  2174.  
  2175. EXTERN_API( void )
  2176. SetGDevice                        (GDHandle                 gd)                                    ONEWORDINLINE(0xAA31);
  2177.  
  2178. EXTERN_API( GDHandle )
  2179. GetGDevice                        (void)                                                        ONEWORDINLINE(0xAA32);
  2180.  
  2181. EXTERN_API( long )
  2182. Color2Index                        (const RGBColor *        myColor)                            ONEWORDINLINE(0xAA33);
  2183.  
  2184. EXTERN_API( void )
  2185. Index2Color                        (long                     index,
  2186.                                  RGBColor *                aColor)                                ONEWORDINLINE(0xAA34);
  2187.  
  2188. EXTERN_API( void )
  2189. InvertColor                        (RGBColor *                myColor)                            ONEWORDINLINE(0xAA35);
  2190.  
  2191. EXTERN_API( Boolean )
  2192. RealColor                        (const RGBColor *        color)                                ONEWORDINLINE(0xAA36);
  2193.  
  2194. EXTERN_API( void )
  2195. GetSubTable                        (CTabHandle             myColors,
  2196.                                  short                     iTabRes,
  2197.                                  CTabHandle             targetTbl)                            ONEWORDINLINE(0xAA37);
  2198.  
  2199. EXTERN_API( void )
  2200. MakeITable                        (CTabHandle             cTabH,
  2201.                                  ITabHandle             iTabH,
  2202.                                  short                     res)                                ONEWORDINLINE(0xAA39);
  2203.  
  2204. EXTERN_API( void )
  2205. AddSearch                        (ColorSearchUPP         searchProc)                            ONEWORDINLINE(0xAA3A);
  2206.  
  2207. EXTERN_API( void )
  2208. AddComp                            (ColorComplementUPP     compProc)                            ONEWORDINLINE(0xAA3B);
  2209.  
  2210. EXTERN_API( void )
  2211. DelSearch                        (ColorSearchUPP         searchProc)                            ONEWORDINLINE(0xAA4C);
  2212.  
  2213. EXTERN_API( void )
  2214. DelComp                            (ColorComplementUPP     compProc)                            ONEWORDINLINE(0xAA4D);
  2215.  
  2216. EXTERN_API( void )
  2217. SetClientID                        (short                     id)                                    ONEWORDINLINE(0xAA3C);
  2218.  
  2219. EXTERN_API( void )
  2220. ProtectEntry                    (short                     index,
  2221.                                  Boolean                 protect)                            ONEWORDINLINE(0xAA3D);
  2222.  
  2223. EXTERN_API( void )
  2224. ReserveEntry                    (short                     index,
  2225.                                  Boolean                 reserve)                            ONEWORDINLINE(0xAA3E);
  2226.  
  2227. EXTERN_API( void )
  2228. SetEntries                        (short                     start,
  2229.                                  short                     count,
  2230.                                  CSpecArray             aTable)                                ONEWORDINLINE(0xAA3F);
  2231.  
  2232. EXTERN_API( void )
  2233. SaveEntries                        (CTabHandle             srcTable,
  2234.                                  CTabHandle             resultTable,
  2235.                                  ReqListRec *            selection)                            ONEWORDINLINE(0xAA49);
  2236.  
  2237. EXTERN_API( void )
  2238. RestoreEntries                    (CTabHandle             srcTable,
  2239.                                  CTabHandle             dstTable,
  2240.                                  ReqListRec *            selection)                            ONEWORDINLINE(0xAA4A);
  2241.  
  2242. EXTERN_API( short )
  2243. QDError                            (void)                                                        ONEWORDINLINE(0xAA40);
  2244.  
  2245. EXTERN_API( void )
  2246. CopyDeepMask                    (const BitMap *            srcBits,
  2247.                                  const BitMap *            maskBits,
  2248.                                  const BitMap *            dstBits,
  2249.                                  const Rect *            srcRect,
  2250.                                  const Rect *            maskRect,
  2251.                                  const Rect *            dstRect,
  2252.                                  short                     mode,
  2253.                                  RgnHandle                 maskRgn) /* can be NULL */            ONEWORDINLINE(0xAA51);
  2254.  
  2255. EXTERN_API( void )
  2256. DeviceLoop                        (RgnHandle                 drawingRgn,
  2257.                                  DeviceLoopDrawingUPP     drawingProc,
  2258.                                  long                     userData,
  2259.                                  DeviceLoopFlags         flags)                                ONEWORDINLINE(0xABCA);
  2260.  
  2261.  
  2262.  
  2263.                                                                                             #if TARGET_OS_MAC && TARGET_CPU_68K && !TARGET_RT_MAC_CFM
  2264.                                                                                             #pragma parameter __A0 GetMaskTable
  2265.                                                                                             #endif
  2266. EXTERN_API( Ptr )
  2267. GetMaskTable                    (void)                                                        ONEWORDINLINE(0xA836);
  2268.  
  2269.  
  2270. EXTERN_API( PatHandle )
  2271. GetPattern                        (short                     patternID)                            ONEWORDINLINE(0xA9B8);
  2272.  
  2273. #if TARGET_OS_MAC
  2274.     #define MacGetCursor GetCursor
  2275. #endif
  2276. EXTERN_API( CursHandle )
  2277. MacGetCursor                    (short                     cursorID)                            ONEWORDINLINE(0xA9B9);
  2278.  
  2279. EXTERN_API( PicHandle )
  2280. GetPicture                        (short                     pictureID)                            ONEWORDINLINE(0xA9BC);
  2281.  
  2282. EXTERN_API( long )
  2283. DeltaPoint                        (Point                     ptA,
  2284.                                  Point                     ptB)                                ONEWORDINLINE(0xA94F);
  2285.  
  2286. EXTERN_API( void )
  2287. ShieldCursor                    (const Rect *            shieldRect,
  2288.                                  Point                     offsetPt)                            ONEWORDINLINE(0xA855);
  2289.  
  2290. EXTERN_API( void )
  2291. ScreenRes                        (short *                scrnHRes,
  2292.                                  short *                scrnVRes)                            SIXWORDINLINE(0x225F, 0x32B8, 0x0102, 0x225F, 0x32B8, 0x0104);
  2293.  
  2294. EXTERN_API( void )
  2295. GetIndPattern                    (Pattern *                thePat,
  2296.                                  short                     patternListID,
  2297.                                  short                     index);
  2298.  
  2299. EXTERN_API_C( Boolean )
  2300. ptinrect                        (const Point *            pt,
  2301.                                  const Rect *            r);
  2302.  
  2303. EXTERN_API_C( void )
  2304. pt2rect                            (const Point *            pt1,
  2305.                                  const Point *            pt2,
  2306.                                  Rect *                    destRect);
  2307.  
  2308. EXTERN_API_C( void )
  2309. pttoangle                        (const Rect *            r,
  2310.                                  const Point *            pt,
  2311.                                  short *                angle);
  2312.  
  2313. EXTERN_API_C( Boolean )
  2314. ptinrgn                            (const Point *            pt,
  2315.                                  RgnHandle                 rgn);
  2316.  
  2317. EXTERN_API_C( void )
  2318. addpt                            (const Point *            src,
  2319.                                  Point *                dst);
  2320.  
  2321. EXTERN_API_C( void )
  2322. subpt                            (const Point *            src,
  2323.                                  Point *                dst);
  2324.  
  2325. EXTERN_API_C( Boolean )
  2326. equalpt                            (const Point *            pt1,
  2327.                                  const Point *            pt2);
  2328.  
  2329. EXTERN_API_C( void )
  2330. stuffhex                        (void *                    thingPtr,
  2331.                                  const char *            s);
  2332.  
  2333. EXTERN_API_C( void )
  2334. stdline                            (const Point *            newPt);
  2335.  
  2336. EXTERN_API_C( void )
  2337. shieldcursor                    (const Rect *            shieldRect,
  2338.                                  Point *                offsetPt);
  2339.  
  2340. EXTERN_API_C( long )
  2341. deltapoint                        (Point *                ptA,
  2342.                                  Point *                ptB);
  2343.  
  2344. #if OLDROUTINENAMES
  2345. #define DisposPixMap(pm) DisposePixMap(pm)
  2346. #define DisposPixPat(pp) DisposePixPat(pp)
  2347. #define DisposCTable(cTable) DisposeCTable(cTable)
  2348. #define DisposCCursor(cCrsr) DisposeCCursor(cCrsr)
  2349. #define DisposGDevice(gdh) DisposeGDevice(gdh)
  2350. #endif  /* OLDROUTINENAMES */
  2351.  
  2352. /*
  2353.     From ToolUtils.i
  2354. */
  2355. EXTERN_API( void )
  2356. PackBits                        (Ptr *                    srcPtr,
  2357.                                  Ptr *                    dstPtr,
  2358.                                  short                     srcBytes)                            ONEWORDINLINE(0xA8CF);
  2359.  
  2360. EXTERN_API( void )
  2361. UnpackBits                        (Ptr *                    srcPtr,
  2362.                                  Ptr *                    dstPtr,
  2363.                                  short                     dstBytes)                            ONEWORDINLINE(0xA8D0);
  2364.  
  2365. EXTERN_API( Fixed )
  2366. SlopeFromAngle                    (short                     angle)                                ONEWORDINLINE(0xA8BC);
  2367.  
  2368. EXTERN_API( short )
  2369. AngleFromSlope                    (Fixed                     slope)                                ONEWORDINLINE(0xA8C4);
  2370.  
  2371. /* New transfer modes */
  2372. enum {
  2373.     colorXorXFer                = 52,
  2374.     noiseXFer                    = 53,
  2375.     customXFer                    = 54
  2376. };
  2377.  
  2378. /* Custom XFer flags */
  2379. enum {
  2380.     kXFer1PixelAtATime            = 0x00000001,                    /* 1 pixel passed to custom XFer proc*/
  2381.     kXFerConvertPixelToRGB32    = 0x00000002                    /* All color depths converted to 32 bit RGB*/
  2382. };
  2383.  
  2384.  
  2385. struct CustomXFerRec {
  2386.     UInt32                             version;
  2387.     void *                            srcPixels;
  2388.     void *                            destPixels;
  2389.     void *                            resultPixels;
  2390.     UInt32                             refCon;
  2391.     UInt32                             pixelSize;
  2392.     UInt32                             pixelCount;
  2393.     Point                             firstPixelHV;
  2394.     Rect                             destBounds;
  2395. };
  2396. typedef struct CustomXFerRec            CustomXFerRec;
  2397. typedef CustomXFerRec *                    CustomXFerRecPtr;
  2398. typedef CALLBACK_API( void , CustomXFerProcPtr )(CustomXFerRecPtr info);
  2399. EXTERN_API( OSErr )
  2400. GetPortCustomXFerProc            (CGrafPtr                 port,
  2401.                                  CustomXFerProcPtr *    proc,
  2402.                                  UInt32 *                flags,
  2403.                                  UInt32 *                refCon)                                FOURWORDINLINE(0x203C, 0x0010, 0x0019, 0xAB1D);
  2404.  
  2405. EXTERN_API( OSErr )
  2406. SetPortCustomXFerProc            (CGrafPtr                 port,
  2407.                                  CustomXFerProcPtr         proc,
  2408.                                  UInt32                 flags,
  2409.                                  UInt32                 refCon)                                FOURWORDINLINE(0x203C, 0x0010, 0x001A, 0xAB1D);
  2410.  
  2411.  
  2412. enum {
  2413.     kCursorComponentsVersion    = 0x00010001
  2414. };
  2415.  
  2416. enum {
  2417.     kCursorComponentType        = FOUR_CHAR_CODE('curs')
  2418. };
  2419.  
  2420. /* Cursor Component capabilities flags */
  2421. enum {
  2422.     cursorDoesAnimate            = 1L << 0,
  2423.     cursorDoesHardware            = 1L << 1,
  2424.     cursorDoesUnreadableScreenBits = 1L << 2
  2425. };
  2426.  
  2427. /* Cursor Component output mode flags */
  2428. enum {
  2429.     kRenderCursorInHardware        = 1L << 0,
  2430.     kRenderCursorInSoftware        = 1L << 1
  2431. };
  2432.  
  2433. /* Cursor Component Info */
  2434.  
  2435. struct CursorInfo {
  2436.     long                             version;                    /* use kCursorComponentsVersion */
  2437.     long                             capabilities;
  2438.     long                             animateDuration;            /* approximate time between animate tickles */
  2439.     Rect                             bounds;
  2440.     Point                             hotspot;
  2441.     long                             reserved;                    /* must set to zero */
  2442.  
  2443. };
  2444. typedef struct CursorInfo                CursorInfo;
  2445. /* Cursor Component Selectors */
  2446. enum {
  2447.     kCursorComponentInit        = 0x0001,
  2448.     kCursorComponentGetInfo        = 0x0002,
  2449.     kCursorComponentSetOutputMode = 0x0003,
  2450.     kCursorComponentSetData        = 0x0004,
  2451.     kCursorComponentReconfigure    = 0x0005,
  2452.     kCursorComponentDraw        = 0x0006,
  2453.     kCursorComponentErase        = 0x0007,
  2454.     kCursorComponentMove        = 0x0008,
  2455.     kCursorComponentAnimate        = 0x0009,
  2456.     kCursorComponentLastReserved = 0x0050
  2457. };
  2458.  
  2459. EXTERN_API( OSErr )
  2460. OpenCursorComponent                (Component                 c,
  2461.                                  ComponentInstance *    ci)                                    FOURWORDINLINE(0x203C, 0x0008, 0x000B, 0xABE0);
  2462.  
  2463. EXTERN_API( OSErr )
  2464. CloseCursorComponent            (ComponentInstance         ci)                                    FOURWORDINLINE(0x203C, 0x0004, 0x000C, 0xABE0);
  2465.  
  2466. EXTERN_API( OSErr )
  2467. SetCursorComponent                (ComponentInstance         ci)                                    FOURWORDINLINE(0x203C, 0x0004, 0x000D, 0xABE0);
  2468.  
  2469. EXTERN_API( OSErr )
  2470. CursorComponentChanged            (ComponentInstance         ci)                                    FOURWORDINLINE(0x203C, 0x0004, 0x000E, 0xABE0);
  2471.  
  2472. EXTERN_API( OSErr )
  2473. CursorComponentSetData            (ComponentInstance         ci,
  2474.                                  long                     data)                                FOURWORDINLINE(0x203C, 0x0008, 0x000F, 0xABE0);
  2475.  
  2476.  
  2477. #if ACCESSOR_CALLS_ARE_FUNCTIONS
  2478. /* GrafPort */
  2479. /* Getters */
  2480. EXTERN_API( PixMapHandle )
  2481. GetPortPixMap                    (CGrafPtr                 port);
  2482.  
  2483. EXTERN_API( Rect *)
  2484. GetPortBounds                    (CGrafPtr                 port,
  2485.                                  Rect *                    rect);
  2486.  
  2487. EXTERN_API( RGBColor *)
  2488. GetPortForeColor                (CGrafPtr                 port,
  2489.                                  RGBColor *                foreColor);
  2490.  
  2491. EXTERN_API( RGBColor *)
  2492. GetPortBackColor                (CGrafPtr                 port,
  2493.                                  RGBColor *                backColor);
  2494.  
  2495. EXTERN_API( RGBColor *)
  2496. GetPortOpColor                    (CGrafPtr                 port,
  2497.                                  RGBColor *                opColor);
  2498.  
  2499. EXTERN_API( RGBColor *)
  2500. GetPortHiliteColor                (CGrafPtr                 port,
  2501.                                  RGBColor *                hiliteColor);
  2502.  
  2503. EXTERN_API( CQDProcsPtr )
  2504. GetPortGrafProcs                (CGrafPtr                 port);
  2505.  
  2506. EXTERN_API( short )
  2507. GetPortTextFont                    (CGrafPtr                 port);
  2508.  
  2509. EXTERN_API( Style )
  2510. GetPortTextFace                    (CGrafPtr                 port);
  2511.  
  2512. EXTERN_API( short )
  2513. GetPortTextMode                    (CGrafPtr                 port);
  2514.  
  2515. EXTERN_API( short )
  2516. GetPortTextSize                    (CGrafPtr                 port);
  2517.  
  2518. EXTERN_API( short )
  2519. GetPortChExtra                    (CGrafPtr                 port);
  2520.  
  2521. EXTERN_API( short )
  2522. GetPortFracHPenLocation            (CGrafPtr                 port);
  2523.  
  2524. EXTERN_API( Fixed )
  2525. GetPortSpExtra                    (CGrafPtr                 port);
  2526.  
  2527. EXTERN_API( short )
  2528. GetPortPenVisibility            (CGrafPtr                 port);
  2529.  
  2530. EXTERN_API( RgnHandle )
  2531. GetPortVisibleRegion            (CGrafPtr                 port,
  2532.                                  RgnHandle                 visRgn);
  2533.  
  2534. EXTERN_API( RgnHandle )
  2535. GetPortClipRegion                (CGrafPtr                 port,
  2536.                                  RgnHandle                 clipRgn);
  2537.  
  2538. EXTERN_API( PixPatHandle )
  2539. GetPortBackPixPat                (CGrafPtr                 port,
  2540.                                  PixPatHandle             backPattern);
  2541.  
  2542. EXTERN_API( PixPatHandle )
  2543. GetPortPenPixPat                (CGrafPtr                 port,
  2544.                                  PixPatHandle             penPattern);
  2545.  
  2546. EXTERN_API( PixPatHandle )
  2547. GetPortFillPixPat                (CGrafPtr                 port,
  2548.                                  PixPatHandle             fillPattern);
  2549.  
  2550. EXTERN_API( Point *)
  2551. GetPortPenSize                    (CGrafPtr                 port,
  2552.                                  Point *                penSize);
  2553.  
  2554. EXTERN_API( SInt32 )
  2555. GetPortPenMode                    (CGrafPtr                 port);
  2556.  
  2557. EXTERN_API( Point *)
  2558. GetPortPenLocation                (CGrafPtr                 port,
  2559.                                  Point *                penLocation);
  2560.  
  2561. EXTERN_API( Boolean )
  2562. IsPortRegionBeingDefined        (CGrafPtr                 port);
  2563.  
  2564. EXTERN_API( Boolean )
  2565. IsPortPictureBeingDefined        (CGrafPtr                 port);
  2566.  
  2567. EXTERN_API( Boolean )
  2568. IsPortOffscreen                    (CGrafPtr                 port);
  2569.  
  2570. /* Setters */
  2571. EXTERN_API( void )
  2572. SetPortBounds                    (CGrafPtr                 port,
  2573.                                  const Rect *            rect);
  2574.  
  2575. EXTERN_API( void )
  2576. SetPortOpColor                    (CGrafPtr                 port,
  2577.                                  const RGBColor *        opColor);
  2578.  
  2579. EXTERN_API( void )
  2580. SetPortGrafProcs                (CGrafPtr                 port,
  2581.                                  CQDProcs *                procs);
  2582.  
  2583. EXTERN_API( void )
  2584. SetPortVisibleRegion            (CGrafPtr                 port,
  2585.                                  RgnHandle                 visRgn);
  2586.  
  2587. EXTERN_API( void )
  2588. SetPortClipRegion                (CGrafPtr                 port,
  2589.                                  RgnHandle                 clipRgn);
  2590.  
  2591. EXTERN_API( void )
  2592. SetPortPenPixPat                (CGrafPtr                 port,
  2593.                                  PixPatHandle             penPattern);
  2594.  
  2595. EXTERN_API( void )
  2596. SetPortBackPixPat                (CGrafPtr                 port,
  2597.                                  PixPatHandle             backPattern);
  2598.  
  2599. EXTERN_API( void )
  2600. SetPortPenSize                    (CGrafPtr                 port,
  2601.                                  Point                     penSize);
  2602.  
  2603. EXTERN_API( void )
  2604. SetPortPenMode                    (CGrafPtr                 port,
  2605.                                  SInt32                 penMode);
  2606.  
  2607. EXTERN_API( void )
  2608. SetPortFracHPenLocation            (CGrafPtr                 port,
  2609.                                  short                     pnLocHFrac);
  2610.  
  2611. /* PixMap */
  2612. EXTERN_API( Rect *)
  2613. GetPixBounds                    (PixMapHandle             pixMap,
  2614.                                  Rect *                    bounds);
  2615.  
  2616. EXTERN_API( short )
  2617. GetPixDepth                        (PixMapHandle             pixMap);
  2618.  
  2619. /* QDGlobals */
  2620. /* Getters */
  2621. EXTERN_API( long )
  2622. GetQDGlobalsRandomSeed            (void);
  2623.  
  2624. EXTERN_API( BitMap *)
  2625. GetQDGlobalsScreenBits            (BitMap *                screenBits);
  2626.  
  2627. EXTERN_API( Cursor *)
  2628. GetQDGlobalsArrow                (Cursor *                arrow);
  2629.  
  2630. EXTERN_API( Pattern *)
  2631. GetQDGlobalsDarkGray            (Pattern *                dkGray);
  2632.  
  2633. EXTERN_API( Pattern *)
  2634. GetQDGlobalsLightGray            (Pattern *                ltGray);
  2635.  
  2636. EXTERN_API( Pattern *)
  2637. GetQDGlobalsGray                (Pattern *                gray);
  2638.  
  2639. EXTERN_API( Pattern *)
  2640. GetQDGlobalsBlack                (Pattern *                black);
  2641.  
  2642. EXTERN_API( Pattern *)
  2643. GetQDGlobalsWhite                (Pattern *                white);
  2644.  
  2645. EXTERN_API( CGrafPtr )
  2646. GetQDGlobalsThePort                (void);
  2647.  
  2648. /* Setters */
  2649. EXTERN_API( void )
  2650. SetQDGlobalsRandomSeed            (long                     randomSeed);
  2651.  
  2652. EXTERN_API( void )
  2653. SetQDGlobalsArrow                (const Cursor *            arrow);
  2654.  
  2655. /* Regions */
  2656. EXTERN_API( Rect *)
  2657. GetRegionBounds                    (RgnHandle                 region,
  2658.                                  Rect *                    bounds);
  2659.  
  2660. EXTERN_API( Boolean )
  2661. IsRegionRectangular                (RgnHandle                 region);
  2662.  
  2663. /* Utilities */
  2664. /* To prevent upward dependencies, GetPortWindow is defined in Window Manager interface: */
  2665. /*        pascal WindowPtr        GetPortWindow(CGrafPtr port); */
  2666. /* NewPtr/OpenCPort doesn't work with opaque structures */
  2667. EXTERN_API( CGrafPtr )
  2668. CreateNewPort                    (void);
  2669.  
  2670. EXTERN_API( void )
  2671. DisposePort                        (CGrafPtr                 port);
  2672.  
  2673. #endif  /* ACCESSOR_CALLS_ARE_FUNCTIONS */
  2674.  
  2675. /*
  2676.    Routines available on Mac OS X to flush buffered window ports...
  2677.    These calls do nothing on Mac OS 8/9. QDIsPortBuffered will always return false there.
  2678. */
  2679.  
  2680. EXTERN_API( Boolean )
  2681. QDIsPortBuffered                (CGrafPtr                 port);
  2682.  
  2683. EXTERN_API( Boolean )
  2684. QDIsPortBufferDirty                (CGrafPtr                 port);
  2685.  
  2686. EXTERN_API( void )
  2687. QDFlushPortBuffer                (CGrafPtr                 port,
  2688.                                  RgnHandle                 region);
  2689.  
  2690.  
  2691.  
  2692.  
  2693.  
  2694.  
  2695.  
  2696.  
  2697.  
  2698.  
  2699.  
  2700.  
  2701. #if PRAGMA_STRUCT_ALIGN
  2702.     #pragma options align=reset
  2703. #elif PRAGMA_STRUCT_PACKPUSH
  2704.     #pragma pack(pop)
  2705. #elif PRAGMA_STRUCT_PACK
  2706.     #pragma pack()
  2707. #endif
  2708.  
  2709. #ifdef PRAGMA_IMPORT_OFF
  2710. #pragma import off
  2711. #elif PRAGMA_IMPORT
  2712. #pragma import reset
  2713. #endif
  2714.  
  2715. #ifdef __cplusplus
  2716. }
  2717. #endif
  2718.  
  2719. #endif /* __QUICKDRAW__ */
  2720.  
  2721.